对不起,这是一个非常基本的问题,但我只是想知道什么时候需要在方法中添加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
两者都有效,但哪些是严格正确的?
我知道这里不需要变量声明,我只是想用一个简单的例子。
干杯!
答案 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
仍然存在,直到类的实例被销毁。