在我的代码中,我指定了一个类“Car”,并且在其他属性中还有一个名为“__isOnSale”的私有属性。它指的是目前在售的汽车。 然后,我的目标是为我的 Car 类提供使用类方法 GetIsOnSale 和 SetIsOnSale 更新此属性的可能性。我应该能够修改其品牌属于brandOnSale的汽车的__isOnSale,这是我在“Car”类之外声明的变量。
因此,car01(属于 OnSale 品牌的欧宝)的 isOnSale 状态应该被修改,但它没有发生。我的代码哪里有错误?
brandOnSale =“欧宝”
类车:
numberOfCars = 0
listOfCars = []
def __init__(self, brand, model, isAirbagOK, isMechanicsOK, isOnSale):
self.brand = brand
self.model = model
self.isAirbagOK = isAirbagOK
self.isMechanicsOK = isMechanicsOK
self.__isOnSale = isOnSale # <------------------------
Car.numberOfCars +=1
Car.listOfCars.append(self)
def isDamaged(self):
return not (self.isAirbagOK and self.isMechanicsOK)
def GetInfo(self):
print("{} {}".format(self.brand,self.model).upper())
print("Air Bag OK? - {}".format(self.isAirbagOK))
print("Mechanics OK? - {}".format(self.isMechanicsOK))
print("IS ON SALE? - {}".format(self.__isOnSale)) # <-----------
print("---------------------------")
def GetIsOnSale(self): # <-----------
return self.__isOnSale
def SetIsOnSale(self, newIsOnSaleStatus):
if self.brand == brandOnSale: # <---------
self.__isOnSale == newIsOnSaleStatus
print("Changing status isOnSale valid. Changing {} for {} ".format(newIsOnSaleStatus, self.brand))
else:
print("Cannot change status isOnSale for {}. Sale valid only for {}".format(self.brand,brandOnSale))
car01=汽车('欧宝','阿斯特拉', True, True, False) car02=汽车('大众','途安',真,真,假)
汽车 = [car01, car02]
car01.GetInfo()
car02.GetInfo()
print("汽车状态:car01:",car01.GetIsOnSale(),"car02:",car02.GetIsOnSale())
car01.SetIsOnSale(True) #< ----------------
car02.SetIsOnSale(True)
print("汽车状态: car01: ",car01.GetIsOnSale(), "car02: ",car02.GetIsOnSale()) #< ----------------
请指出我的错误。 提前非常感谢您。
这是一个简单的错字 - 没有什么复杂的事情发生。您在
__isOnSale
中对 SetIsOnSale
的分配中有一个双重等于(即测试相等性)。将其更改为单个等于,您就会被排序。