我在Python中遇到困难,但我知道它是如何工作的,因为我在Java方面的经验有点大......为了清楚起见,我在这里搜索了问题以及在线文档,所以我知道这将在瞬间标记为重复的问题:P
我在Codecademy上的代码传递方式如下:
class Car(object):
condition = "new"
def __init__(self, model, color, mpg):
self.model = model
self.color = color
self.mpg = mpg
def display_car(self):
return "This is a %s %s with %s MPG." % (self.color, self.model, self.mpg)
def drive_car(self):
self.condition = "used"
class ElectricCar(Car):
def __init__(self, model, color, mpg, battery_type):
self.model = model
self.color = color
self.mpg = mpg
self.battery_type = battery_type
但据我所知,我几乎要定义一个新类......那里的继承是什么?我可以这样做:
class ElectricCar(Car):
def __init__(self, battery_type):
self.model = model
self.color = color
self.mpg = mpg
self.battery_type = battery_type
也许带有关键字的东西
super
答案 0 :(得分:5)
您可以调用Car init方法并传递其参数
class ElectricCar(Car):
def __init__(self, model, color, mpg, battery_type):
Car.__init__(self,model,color,mpg)
self.battery_type = battery_type
或者您也可以使用super
方法,这是评论中提到的首选方法。
class ElectricCar(Car):
def __init__(self, model, color, mpg, battery_type):
super(ElectricCar,self).__init__(model, color, mpg)
self.battery_type = battery_type
答案 1 :(得分:1)
继承在哪里?
继承在于你可以用这些类做什么:
>>> car = Car('Ford Prefect', 'white', 42)
>>> print(car.display_car())
This is a white Ford Prefect with 42 MPG.
>>> electric_car = ElectricCar('Tesla Model S', 'silver', None, 'lead-acid')
>>> print(electric_car.display_car())
This is a silver Tesla Model S with None MPG.
请注意,您没有必要编写ElectricCar.display_car()
方法。
答案 2 :(得分:1)
如果你只是继承了对象类,那么你说你实际上是在创建一个新类是正确的 - 它只是提供了一个基础。事实上,在Python 3.X中,根本不需要这样做。定义类似
的类class Car:
def __init(self, ...
并且对象继承不言而喻。
您正在使用它。继承的真正力量在于建立其他预定义的类,例如继承自Car的ElectricCar,通过以下定义:
class ElectricCar(Car):
super(ElectricCar, self).__init__()
...
这为您提供了Car类的功能,而无需重新定义所有内容。
查看有关继承here的文档以获取更多详细信息。