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

标签 python python-3.x

<分区>

抱歉,这是一个非常基本的问题,但我只是想知道什么时候有必要在方法中的变量声明前加上 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

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

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

干杯!

最佳答案

两者效果一样。

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

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

关于Python3 - 什么时候你需要在类方法中的变量声明前添加 "self._"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30294383/

相关文章:

python - 检测 python-xmpp 超时

Python 列表多重赋值

python - 将新值填充到用零填充的固定形状 numpy 数组中

python - 在 SciPy 中使用 Sympy 变量最小化函数?

python - Networkx:如何更改节点索引

Python 3 和 Pandas - 在 DataFrame 中创建新行但为空 DataFrame

python - 导入错误 : No module named pip after trying to upgrade pip

python - 如何正确完成 python 3 脚本

python - PyQt5 中 QProcess 的刷新缓冲区

python - 区分 PIL 和 CV2 图像