Python AttributeError:属性无法覆盖继承的属性?

Python AttributeError:属性无法覆盖继承的属性?,python,properties,Python,Properties,我仍然不完全理解何时以及如何使用属性。这里我有一个类SpecialCar,它继承了Car。变量summer\u tire基本上应与tire等效,但名称除外。因此,每当我要求这两种选择中的任何一种时,我都想得到summer\u tire 使用@property会导致错误。删除@属性行将打印0,但我想得到2 class Car(): def __init__(self): self.tire = 0 class SpecialCar(Car): def __init

我仍然不完全理解何时以及如何使用属性。这里我有一个类
SpecialCar
,它继承了
Car
。变量
summer\u tire
基本上应与
tire
等效,但名称除外。因此,每当我要求这两种选择中的任何一种时,我都想得到
summer\u tire

使用
@property
会导致错误。删除
@属性
行将打印
0
,但我想得到
2

class Car():
    def __init__(self):
        self.tire = 0

class SpecialCar(Car):
    def __init__(self):
        Car.__init__(self)
        self.summer_tire = 2
        self.winter_tire = 5

    @property
    def tire(self):
        return self.summer_tire

i = SpecialCar()
print(i.tire)

您在
Car中声明了一个没有setter的属性,因此
self.tire=0
。\uuuuu init\uuuu
失败

您可以为新的
属性
设置一个setter:

class SpecialCar(Car):
    def __init__(self):
        Car.__init__(self)
        self.summer_tire = 2
        self.winter_tire = 5

    @property
    def tire(self):
        return self.summer_tire

    @tire.setter
    def tire(self, new_tire):
        self.summer_tire = new_tire

或者您可以避免调用
Car.\uuuu init\uuuuu
,或者将
Car.tire
设置为类的一部分,并在子类中替换为
属性。

您声明了一个没有设置器的属性,因此
Car中的
self.tire=0
失败

您可以为新的
属性
设置一个setter:

class SpecialCar(Car):
    def __init__(self):
        Car.__init__(self)
        self.summer_tire = 2
        self.winter_tire = 5

    @property
    def tire(self):
        return self.summer_tire

    @tire.setter
    def tire(self, new_tire):
        self.summer_tire = new_tire

或者您可以避免调用
Car.\uuu init\uuuu
,或者将
Car.tire
设置为类的一部分,并在子类中替换为
属性。

不是答案,但值得一问,如果属性未计算,为什么它不是“真实”属性?不是答案,但值得一问,如果不计算财产,为什么它不是“不动产”?