为什么私有类变量中的这个结构会将他的数据附加到前一个实例?
class garden:
__flower = []
def __init__(self, flower):
self.__flower.append(flower)
def __str__(self):
return str(self.__flower)
g1 = garden([1,2,3,4])
print(g1)
g2 = garden([5,6,7,8])
print(g1)
输出:
[[1, 2, 3, 4]]
[[1, 2, 3, 4], [5, 6, 7, 8]]
与“字符串行为”相比,看起来真的与我不同 - 为什么:
class garden:
__flower = ""
def __init__(self, flower):
self.__flower = flower
def __str__(self):
return str(self.__flower)
g1 = garden("dsf")
print(g1)
g2 = garden("asdf")
print(g2)
print(g1)enter code here
输出:
dsf
asdf
dsf
感谢您的回答
答案 0 :(得分:4)
因为在class
但外部任何def
中声明的变量是类属性,由该类的所有实例共享。
class Garden(object):
class_flower_attribute = []
def __init__(self, flower):
self.instance_flower_attribute = [flower]