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
仍然有效,直到销毁该类的实例为止。