Python 对def_uuinit中的uu init_uu方法感到困惑__
在以下代码中:Python 对def_uuinit中的uu init_uu方法感到困惑__,python,python-3.x,oop,tkinter,Python,Python 3.x,Oop,Tkinter,在以下代码中: import tkinter as tk class CardShuffling(tk.Tk): background_colour = '#D3D3D3' deck_size = 52 def __init__(self): tk.Tk.__init__(self) # What does this do? 我对最后一行的目的感到困惑。。CardShuffling的一个实例继承自tk.tk,最
import tkinter as tk
class CardShuffling(tk.Tk):
background_colour = '#D3D3D3'
deck_size = 52
def __init__(self):
tk.Tk.__init__(self) # What does this do?
我对最后一行的目的感到困惑。。CardShuffling的一个实例继承自tk.tk
,最后一行不是重复了CardShuffling(tk.tk)
CardShuffling(tk.tk)
只会使类CardShuffling
成为tk.tk
的子类。新类继承该类的所有方法
但是,如果您创建了一个新对象,您仍然必须调用该基类的构造函数(使用新对象作为参数)。假设父类的构造函数中有一行self.a=0。初始化新实例时,子类必须运行此行CardShuffling(tk.tk)
不能为您这样做;您需要运行父类的\uuuu init\uuu
在Python3中,通常的方法是
def __init__(self):
super().__init__()
在这种情况下,这与
def __init__(self):
tk.Tk.__init__(self)
也许这会有所帮助,甚至还有免费的。我已经读完了这篇文章,但仍然有点困惑。CardShuffling是tk.tk的子类,因此它拥有tk.tk的所有方法-但是我们仍然需要在子类的构造函数中显式地声明它?你能充实一下self.a=0的评论吗?如果CardShuffling(tk.tk)继承了父构造函数的所有内容,为什么不从父构造函数运行该行呢?因为定义类时,
self
不存在。当您声明:cs=CardShuffling()
时,只会得到一个实例(具有self
)。现在,cs
就是一个例子。只有现在,您才能将类似于self.a
(随后将转换为cs.a
)的成员附加到该实例。