![](/img/trans.png)
[英]In Python how can I overwrite the class attribute of an inherited class, where that attribute is itself an instance of a model?
[英]Python AttributeError: property cannot overwrite inherited attribute?
我仍然不完全了解何时以及如何使用属性。 在这里,我有一个SpecialCar
类,它继承了Car
。 除了名称之外,变量summer_tire
基本上应与tire
等效。 因此,无论何时我要求这两个中的任何一个,我都想要获得summer_tire
。
使用@property
导致错误。 删除@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.__init__
self.tire = 0
失败。
您可以给新property
设置一个设置者:
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.__init__
,或者将Car.tire
类属性,将其设置为类的一部分并替换为子类中的property
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.