0

メンバー変数は、呼び出されると からにcondition変わる必要があります。ただし、この呼び出しは引き続きスーパークラスの関数を実行します。"new""like new"my_car.drive_car()drive_carclass Carclass ElectricCar

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


    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"

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

    print my_car.condition #Prints "New"
    my_car.drive_car()
    print my_car.condition #Prints "Used" instead of "Like New"
4

1 に答える 1

0

そのような継承は、実際には、従来から「優れたオブジェクト指向プログラミング」と呼ばれるものです。他にもたくさんの方法がありますが、すでに使用している方法が最適です。

于 2013-11-17T23:32:18.697 に答える