第一个在类实例上创建持久引用,并且在方法范围之外的对象上可用。后者创建一个纯本地引用,该引用在方法之外将不可用。哪种情况更好取决于情况,但是如果实际上仅是临时变量,则使用局部(非self
)变量。
情况1:
>>> foo = MyClass()
>>> foo.MyVariable
...
AttributeError: 'MyClass' object has no attribute 'MyVariable'
>>> foo.Hello('bar')
'Hello bar'
>>> foo.MyVariable
'Hello bar'