Python3 - 你究竟需要在类方法中将“self._”添加到变量声明中吗?

时间:2015-05-18 02:47:30

标签: python python-3.x

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

其中哪些方法有效(例如某些假设类):

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

OR

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

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

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

干杯!

1 个答案:

答案 0 :(得分:2)

两者都是平等的。

在第一个版本中,将在函数内创建SELECT movie.title FROM movie WHERE movie.id IN (SELECT session.movie_id FROM session WHERE session.id = :id and date = :date) length_of_thing将向调用者返回一个副本。返回后return本身将不再存在。

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