在类中键入错误

时间:2015-04-15 21:16:57

标签: python python-3.x

我正在尝试创建名为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'

2 个答案:

答案 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.")