我有一个关于python和类初始化变量的问题.
所以我最近在Python(2.7.X)中注意到,如果设置一个尚未定义或初始化的类变量,您仍然可以调用和访问该变量中的数据.
例如:
class Test:
def __init__(self):
self.a = "Hello"
t = Test()
print t.a
t.b = "World"
print t.b
Run Code Online (Sandbox Code Playgroud)
输出:
Hello
World
Run Code Online (Sandbox Code Playgroud)
我希望'print tb'出错,因为b尚未在Test()类中定义,但它运行没有任何问题.为什么会这样?谁能解释一下?
感谢您的时间.
从实例对象上的文档(t是一个实例对象,因为它是自定义类的实例Test):
不需要声明数据属性; 像局部变量一样,它们在第一次被分配时就会存在.
然而,你可以通过让你的预期行为__slots__与新式类.这会覆盖属性的默认字典存储,以使对象的内存效率更高,如果尝试分配给未定义的属性,也会导致AttributeError __slots__,例如:
>>> class Test(object):
... __slots__ = ['a']
...
>>> t = Test()
>>> t.a = "Hello"
>>> t.b = "World"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Test' object has no attribute 'b'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |