本文对Frame.init和super()作了简单的解释
1.关于Frame.init
from Tkinter import *
class AppUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
在上述代码中 ,AppUI
是一个继承了Frame的
类,这意味着AppUI
既有它自己的特点也可以使用Frame
类中的方法。在本案例中,Frame.__init__(self, master)
含义为:当你实例化一个AppUI
时,我希望它首先被初始化为一个Frame
框架,然后再 执行特定于AppUI
初始化。
2.关于super()
这里你也可以选择使用super().__init__()
,这个做的好处时当你想要改变基类时你不必做过多的修改:
class A():
def m(self):
print('A')
class B():
def m(self):
print('B')
class C(A): #基类为A
def m(self):
print('C')
super().m() #相当于A.m(),因此此处会打印'A'
C().m() #实例化C类
此时如果我想改变改变C()的基类
我可以直接修改C(A)
—>C(B)
,而不用修改super().m()
,否则的话一旦基类修改那它下面所有的方法名都要修改,因为基类名被写死了,以后改动起来就要逐行修改很麻烦。