在Python方法中使用self作为临时变量会有所不同吗?

我有时需要在方法定义中使用临时变量,这些变量不在方法之外使用.在下面的类定义中使用self.MyVariable和MyVariable之间的行为有什么不同吗?哪种方法更好,为什么?

示例1:self.MyVariable

class MyClass:
    def Hello(self, Name):
        self.MyVariable = "Hello " + Name
        return self.MyVariable

例2:MyVariable

class MyClass:
    def Hello(self, Name):
        MyVariable = "Hello " + Name
        return MyVariable

最佳答案 第一个在类实例上创建持久引用,并且可以在方法范围之外的对象上使用.后者创建一个纯粹的本地引用,在方法之外不可用.哪个更好取决于具体情况,但如果它实际上只是一个临时变量,则使用本地(非自身)变量.

情况1:

>>> foo = MyClass()
>>> foo.MyVariable
...
AttributeError: 'MyClass' object has no attribute 'MyVariable'
>>> foo.Hello('bar')
'Hello bar'
>>> foo.MyVariable
'Hello bar'

情况2如上所述,除了在调用Hello之后MyVariable仍然不是对象的属性.

点赞