[英]class variables v/s instance variables in python
根據我以前對python oop的了解,我知道python對所有類實例都有一個類變量的單個副本;它意味着:
>>> class A: foo = []
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
但是當我這樣做時:
>>> class A():
cl_var=5
def __init__(self,b):
self.obj_var=b
>>> a1,a2=A(2),A(5)
>>> a1.cl_var
5
>>> a1.cl_var=23
>>> a2.cl_var
5
為什么a2.cl_var沒有變成23?
分配給a1.cl_var
, 重新綁定與a1
關聯的cl_var
。 這不會影響a2.cl_var
。
>>> id(a1.cl_var), id(a2.cl_var)
(11395416, 11395416)
如您所見, a1.cl_var
和a2.cl_var
是同一個對象。
但是,當您分配給a1.cl_var
,它們將成為不同的對象:
>>> a1.cl_var=23
>>> id(a1.cl_var), id(a2.cl_var)
(11395200, 11395416)
這在a
/ b
示例中不會發生,因為您通過引用修改了 foo
。 你不重新綁定(即分配)它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.