gpt4 book ai didi

python - 对 def __init__ 中的 __init__ 方法感到困惑

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:35 27 4
gpt4 key购买 nike

在下面的代码中:

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) 不能为你做那个;你需要运行父类的__init__

在 python 3 中通常的做法是

def __init__(self):
super().__init__()

在这种情况下与

相同
def __init__(self):
tk.Tk.__init__(self)

也许这个article on inheritance有帮助,甚至还有一个 book chapter免费提供。

关于python - 对 def __init__ 中的 __init__ 方法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com