您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python类变量int vs数组

Python类变量int vs数组

您是正确的-在Foo.a访问self.a实际访问的情况下Foo.a,该访问在的所有实例之间共享Foo。但是,当您进行更新时self.n+=实际上在self该阴影上创建了一个实例级变量Foo.n

>>> import dis
>>> dis.dis(Foo.bar)
  5           0 LOAD_FAST                0 (self)
              3 LOAD_ATTR                0 (a)
              6 LOAD_ATTR                1 (append)
              9 LOAD_CONST               1 ('foo')
             12 CALL_FUNCTION            1
             15 POP_TOP

  6          16 LOAD_FAST                0 (self)
             19 DUP_TOP             
             20 LOAD_ATTR                2 (n)
             23 LOAD_CONST               2 (1)
             26 INPLACE_ADD         
             27 ROT_TWO             
             28 STORE_ATTR               2 (n)
             31 LOAD_CONST               0 (None)
             34 RETURN_VALUE

换句话说,当您执行self.a.append('some value')此操作时,解释a器将通过名称on从内存中获取数据Foo,然后对Foo.a指向的列表进行变异。

另一方面,当您执行self.n += 1口译员时:

python 2022/1/1 18:36:55 有226人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶