我正在尝试创建名为Thing
的{{1}}的子类。在定义Openable
方法时,我得到了一个
__init__()
在我的代码中,我已经为我的类包含了测试。我不确定是什么导致了这个错误。我的代码是:
type error: Traceback (most recent call last):
File "/Users/jaredbanton8/Documents/things.py", line 57, in <module>
book1 = Openable("Necronomicon", "book shelf")
File "/Users/jaredbanton8/Documents/things.py", line 40, in __init__
super().__init__(name)
TypeError: __init__() missing 1 required positional argument: 'location'
答案 0 :(得分:8)
你应该用两个参数调用__init__
一次,而不是用一个参数调用两次:
super().__init__(name, location)
此外,如果您使用的是Python 2,super
也需要一些参数:
super(Openable, self).__init__(name, location)
答案 1 :(得分:7)
__init__
的{p> class Thing
需要两个参数。在__init__
class Openable
替换
super().__init__(name)
super().__init__(location)
与
super().__init__(name, location)
上面的代码适用于 Python 3.x 。在 Python 2.x 中,您需要
super(Openable, self).__init__(name, location)
或
Thing.__init__(self, name, location)
is_open()
中的函数class Openable
可能看起来像
def is_open():
return self.isOpen
def __init__(self, name, location, o=False):
super().__init__(name, location)
self.isOpen = o
并使用
if o.is_open():
print("The " + o.name + " should now be open.")
else:
print("The " + o.name + " should now be closed.")