当我读到这个tutorial约tkinter
为我在Python中的GUI第一步,我意识到在__init__
函数内部调用一个类函数。为什么在__init__中调用类函数时必须声明自己?
我想了解,在__init__
函数中调用类函数时,为什么要声明self.class_function()
?
我发现下面这个答案,这只是说,它必须调用self.class_function
而不是class_function
this问题,但不提供有关为什么必须这样做的任何概念或解释:
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
你必须调用类函数时使用的自我。因为它有助于确定函数如何表现特定对象。它也有助于继承。你可以在哪里改变或重写基类函数。此外,使用静态方法的事实。你必须提供所有的实例信息给静态函数,但是关于与对象关联的私有类变量呢?你将如何将它们提供给静态函数,这将是一种肮脏的习惯。 –
您的示例不包含类方法。 'parse_file'是一个实例方法。 –
如果你愿意,你也可以称它为'MyClass.parse_file(self)' –