【发布时间】:2017-08-08 04:50:44
【问题描述】:
当我阅读这篇关于tkinter 的tutorial 以了解我在Python 中使用GUI 的第一步时,我意识到在__init__ 函数内部调用了一个类函数。
我想了解一下,为什么在__init__函数内部调用类函数时必须声明self.class_function()?
我在下面找到了this 问题的答案,它只是说它必须被称为self.class_function 而不是class_function,而没有提供任何关于为什么必须这样做的概念或解释:
class MyClass():
def __init__(self, filename):
self.filename = filename
self.stat1 = None
self.stat2 = None
self.stat3 = None
self.stat4 = None
self.stat5 = None
self.parse_file()
def parse_file(self):
#do some parsing
self.stat1 = result_from_parse1
self.stat2 = result_from_parse2
self.stat3 = result_from_parse3
self.stat4 = result_from_parse4
self.stat5 = result_from_parse5
【问题讨论】:
-
调用类函数时必须使用self。因为它有助于确定函数对特定对象的行为方式。它在继承过程中也有帮助。您可以在其中使用另一个更改或覆盖基类函数。还有关于使用静态方法的事实。您必须向静态函数提供所有实例信息,但与对象关联的私有类变量呢?你将如何将它们提供给静态函数,这将是一种肮脏的做法。
-
您的示例不包含类方法。
parse_file是一个实例方法。 -
如果你愿意,你也可以这样称呼它
MyClass.parse_file(self) -
看看docs
-
谢谢,@AzatIbrakov。