Python 迷惑系列

2022-07-29 11:06:14 +08:00
 damngoto
class CSStudent:
    stream = 'cse'

a = CSStudent()
a.stream = 'ece'

b = CSStudent()
CSStudent.stream = 'mech'
c = CSStudent()
  
print(a.stream) # ece
print(b.stream) # mech
print(c.stream) # mech

直觉上看的话 a 应该也要被改才对,不知道 py 的机制。 id 看的话 id(a.stream) 的地址确实与 bc 不一样,所以没有受到影响。

4274 次点击
所在节点    Python
23 条回复
documentzhangx66
2022-07-30 05:08:45 +08:00
无论结论是什么,谁这样写代码,就开除谁。

这特么团队毒瘤吧。
solopython
2022-07-30 23:36:08 +08:00
最佳实践是使用类名来更改类变量的值。因为如果我们尝试通过使用一个对象来更改类变量的值,则会为该特定对象创建一个新的实例变量,它会隐藏类变量。
fgwmlhdkkkw
2022-08-02 16:48:53 +08:00
你就不能怀疑你自己的直觉吗?……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869414

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX