我期望实例值的“ maintanenance_freq”属性更改为6,但是我看不到这种情况。它显示12.我在这里错过了什么吗?
import datetime
class car():
def __init__(self, color,make,model,year,maintanenance_freq):
self.color=color
self.make=make
self.model=model
self.year=year
self.maintanenance_freq=maintanenance_freq
def vehicle_age(self):
now = datetime.datetime.now()
return(now.year-self.year)
@classmethod
def maintenance_window_cls(cls,window):
cls.maintanenance_freq = window
return cls.maintanenance_freq
car1= car("Green","Honda","Accord",2014,12)
car2= car("White","Lexus","NX",2017,12)
car.maintenance_window_cls(6)
print(car2.maintanenance_freq)
答案 0 :(得分:0)
您正在将类属性与实例属性混淆。
在此类中,race
是类属性,而name
和age
是实例属性:
class Person(object):
race = "human"
def __init__(self, name, age):
self.name = name
self.age = age
Person
的每个实例都有自己的name
和age
值,并且所有实例都为race
共享一个值。
在您的示例中,您要设置与实例属性同名的类属性,这几乎没有用,因为实例属性优先于同名的类属性。
car.maintanenance_freq
(类属性)设置为6,但是car2.maintanenance_freq
(实例属性)仍设置为12。