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
设置为类的一部分,并在子类中替换为属性。不是答案,但值得一问,如果属性未计算,为什么它不是“真实”属性?不是答案,但值得一问,如果不计算财产,为什么它不是“不动产”?