我需要在类中添加另一个选项,一个简单的“edit=False”。不完全重写初始化。 我发现这段代码是为kivy编写的:
class TitleBox(BoxLayout):
def __init__(self, **kwargs):
# make sure we aren't overriding any important functionality
super(TitleBox, self).__init__(**kwargs)
但是,当我试图编辑我的目的,我收到:“TypeError:init()采取最多2个参数(3个给定)”
class Person_Dialog(tkSimpleDialog.Dialog):
def __init__(self, edit=False, **kwargs):
super(Person_Dialog, self).__init__(**kwargs)
self.edit = edit
给出
__init__
签名:当您这样做时:
Python创建一个实例并将其分配给
self
参数。然后它将root
赋值给edit
参数。然后它接受'Add a person'
并且找不到其他的位置参数来分配它。你知道吗要解决此问题,请向
__init__
添加另一个参数:注意,我们还将
parent
传递给超类,因为tkSimpleDialog.Dialog
有这个签名__init__(self, parent, title=None)
。你知道吗不幸的是,您的代码现在在使用
TypeError: must be type, not classobj
时失败,因为tkSimpleDialog.Dialog
是一个旧样式类,您不能将super()
用于旧样式类。(Python3去掉了旧样式的类,因此您不会遇到这个问题。)因此,要解决这个问题,请将对
super()
的调用替换为对超类的直接引用:现在你的代码可以工作了。你知道吗
相关问题 更多 >
编程相关推荐