1

このメソッドは、のメンバー変数をmy_car.drive_car()に更新することを意図していますが、それでもスーパー クラスから呼び出します。ElectricCarcondition"like new"drive_carCar

    my_car = ElectricCar("Flux capacitor", "DeLorean", "silver", 88)

    print my_car.condition #Prints "New"
    my_car.drive_car()
    print my_car.condition #Prints "Used"; is supposed to print "Like New"

何か不足していますか?スーパークラス関数をオーバーライドするよりエレガントな方法はありますか?

class ElectricCarスーパーから継承class Car

    class Car(object):
            condition = "new"

            def __init__(self, model, color, mpg):
                    self.model, self.color, self.mpg = model, color, mpg

            def drive_car(self):
                    self.condition = "used"

    class ElectricCar(Car):
            def __init__(self, battery_type, model, color, mpg):
                    self.battery_type = battery_type
                    super(ElectricCar, self).__init__(model, color, mpg)

            def drive_car(self):
                    self.condition = "like new"
4

1 に答える 1

0

インスタンス変数ではなく、クラス変数として条件を定義しています。これを行う:

class Car(object):
    def __init__(self, model, color, mpg):
        self.model, self.color, self.mpg = model, color, mpg
        self.condition = "new"

    def drive_car(self):
        self.condition = "used"

class ElectricCar(Car):
    def __init__(self, battery_type, model, color, mpg):
        super(ElectricCar, self).__init__(model, color, mpg)
        self.battery_type = battery_type

    def drive_car(self):
        self.condition = "like new"
于 2013-11-11T00:31:29.953 に答える