本问题已经有最佳答案,请猛点这里访问。
在下面的代码中,我不断地得到相同的错误,尽管我重新检查了它超过15分钟。你的信息,我运行它崇高的文本和错误:
TypeError: super() takes at least 1 argument (0 given)
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | class Car(): """A simple attempt to represent a car.""" def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descriptive_name(self): long_name = str(self.year) + ' ' + self.make + ' ' + self.model return long_name.title() def read_odometer(self): print("This car has" + str(self.odometer_reading) +" miles on it.") def update_odometer(self, mileage): if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an odometer!") def increment_odometer(self, miles): self.odometer_reading += miles class ElectricCar(Car): """Represent aspects of a car, specific to electric vehicles.""" def __init__(self, make, model, year): """Initialize attributes of the parent class.""" super().__init__(make, model, year) my_tesla = ElectricCar('tesla', 'model s', 2016) print(my_tesla.get_descriptive_name()) |
这里的问题在StackOverflow上有很好的文档说明。但是我将解释您如何不正确地使用
你的
1 | super(ElectricCar, self).__init__(make, model, year) |
现在,如果我们打印出对象的类型
1 2 | >>> print type(my_tesla) <class '__main__.ElectricCar'> |
我们可以看到它的类型是
为什么这些都很重要呢?这两种风格之间有一些关键的区别。在旧的样式中,类及其为实例化定义的对象具有不同的类型。在旧式类中,实例的类型总是
老式- >
1 2 3 4 5 6 | >>> class MyClass: pass >>> print type(MyClass) >>> print type(MyClass()) <type 'classobj'> <type 'instance'> |
新风格- >
1 2 3 4 5 6 | >>> class MyClass(object): pass >>> print type(MyClass) >>> print type(MyClass()) <type 'type'> <class '__main__.MyClass'> |
请参考Python关于