Python3 - 什么时候需要在类方法中的变量声明前加上“self._”?

use*_*418 5 python python-3.x

抱歉,这是一个非常基本的问题,但我只是想知道什么时候需要self._在方法中添加变量声明?每次我在方法中声明一个变量时,我应该用self._included 来声明它吗?有什么情况我不应该这样做吗?

例如,这些方法中的哪些是有效的(对于某些假设类):

def thing_counter(self, thing):
    length_of_thing = len(thing)
    return length_of_thing
Run Code Online (Sandbox Code Playgroud)

或者

def thing_counter(self, thing):
    self._length_of_thing = len(thing)
    return self._length_of_thing
Run Code Online (Sandbox Code Playgroud)

两者都有效,但哪个是严格正确的?

我知道这里并不真正需要变量声明,我只是想使用一个简单的例子。

干杯!

jco*_*ens 11

两者工作相同。

在第一个版本中,length_of_thing将在函数内部创建,并将return副本返回给调用者。length_of_thing回归后本身将不复存在。

在第二个中,self._length_of_thing将被创建,不是在函数内部,而是在类的实例内部。结果是所有其他方法都可以看到它。并且return仍然返回一个副本。所以这个版本可能会使用更多的内存,因为变量self._length_of_thing在类的实例被销毁之前一直保持活动状态。