我的问题涉及在类构造函数之外的方法中初始化的实例变量.这适用于Python.
我先说出我的理解:
(2)和(3)的一个例子 - 参见下面的Cat类中的self.meow和self.roar:
class Cat():
def __init__(self):
self.meow = "Meow!"
def meow_bigger(self):
self.roar = "Roar!"
Run Code Online (Sandbox Code Playgroud)我的问题:
为什么在构造函数中初始化实例变量是最佳实践?
如果实例变量在构造函数以外的方法中定期初始化,可能会出现一般/特定的混乱?(例如,在他的编程Python中读过Mark Lutz的Tkinter指南,我认为这很好,我注意到用于保存PhotoImage对象/引用的实例变量在其他方法中初始化,而不是在构造函数中初始化.它似乎没有工作问题,但从长远来看,这种做法是否会引起问题?)
在哪些情况下,在其他方法中而不是在构造函数中初始化实例变量会更好?
据我所知,实例变量不是在创建类对象时存在,而是在实例化类对象之后存在.继续我上面的代码,我证明了这一点:
>> c = Cat()
>> c.meow
'Meow!'
>> c.roar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Cat' object has no attribute 'roar'
>>> c.meow_bigger()
>>> c.roar
'Roar!'
Run Code Online (Sandbox Code Playgroud)
原样: