Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对def_uuinit中的uu init_uu方法感到困惑___Python_Python 3.x_Oop_Tkinter - Fatal编程技术网

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
)的成员附加到该实例。