这背后是什么样的机制?
例如,我可以定义一个类
class test:
string_a="aaa"
然后我可以为类测试设置一个实例。
test_instance=test()
稍后我可以为test_instance分配test_attr
。
test_instance.test_attr="bbb"
print test_instance.test_attr
这将打印"bbb"
那么行为是什么?与__init__
冲突的任何事情?
感谢。
答案 0 :(得分:0)
这里有两件事:
区分差异很重要。
类属性,如:
class A:
a = 1
每次创建的实例都会保留。那就是:
a = A()
b = A()
a.a == b.a # True
实例属性通常由名为__setattr__
的魔术方法访问(设置)和__getattr__
( 检索他们)。
所有类的实例(除非您使用__slots__
)都有一个名为__dict__
的内部字典。您不必在类上“声明”属性,以便在实例上设置它们。