Дочерний класс не может получить значение свойства из родительского класса - PullRequest
0 голосов
/ 11 января 2019

У меня есть два класса. Engine - это родительский класс, а Car - дочерний. Я определил свойство и установщик для свойства в классе Engine. Я хочу получить значение свойства или изменить его из дочернего класса (Car).

Вот пример, с которым я работаю:

#!/usr/bin/env python3

import sys

class Engine:
    def __init__(self):
        self.__cylinder = 4

    @property
    def cylinder(self):
        return self.__cylinder
    @cylinder.setter
    def cylinder(self,cylinder):
        self.__cylinder = cylinder

    def start(self):
        print("Engine started.")

    def stop(self):
        print("Engine stopped.")

class Car(Engine):
    def __init__(self):
        self.__wheel = 4
        print("How many cylinders? - " + str(Engine.cylinder))

    @property
    def wheel(self):
        return self.__wheel
    @wheel.setter
    def wheel(self, wheel):
        self.__wheel = wheel

    def drive(self):
        self.start()
        print("Car is driving")

    def stop(self):
        print("Car stopped")

class Tandem(Car):
    pass

def main():
    car = Car()
    #print("How many cylinders? - " + str(car.cylinder))

if __name__ == "__main__":
    main()
sys.exit(0)

Печать в классе Car (функция init) дает следующее:

How many cylinders? - <property object at 0x10b754a48>

И если я раскомментирую print в основной функции, это выдаст мне ошибку:

Traceback (most recent call last):
  File "./test62.py", line 49, in <module>
    main()
  File "./test62.py", line 46, in main
    print("How many cylinders? - " + str(car.cylinder))
  File "./test62.py", line 11, in cylinder
    return self.__cylinder
AttributeError: 'Car' object has no attribute '_Engine__cylinder'

Что я делаю не так на каждом из этих отпечатков?

...