Python3-您到底何时需要在类方法中的变量声明前加上“ self._”? [重复] - python

This question already has answers here:

Does it make a difference using self for a temporary variable in a Python method?

(4个答案)

5年前关闭。

抱歉,这是一个非常基本的问题,但是我只是想知道何时有必要在方法中在变量声明前加上self._吗?每次我在方法中声明变量时,都应在包含self._的情况下进行声明吗?有什么情况我不应该这样做吗?

例如,以下哪种方法有效(对于某些假设的类):

def thing_counter(self, thing):
    length_of_thing = len(thing)
    return length_of_thing

要么

def thing_counter(self, thing):
    self._length_of_thing = len(thing)
    return self._length_of_thing

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

我知道这里实际上并不需要变量声明,我只是想使用一个简单的示例。

干杯!

python大神给出的解决方案

两者均能正常工作。

在第一个版本中,将在函数内部创建length_of_thing,并且return将副本复制到调用方。返回后,length_of_thing本身将不再存在。

在第二个中,将创建self._length_of_thing,而不是在函数内部,而是在类的实例内部。结果是它对于所有其他方法都是可见的。并且return仍返回副本。
因此,此版本可能会使用更多的内存,因为变量self._length_of_thing仍然有效,直到销毁该类的实例为止。