为什么实例属性的值没有变化,即使我编写了代码来执行它(python)

问题描述 投票:0回答:1

在我的代码中,我指定了一个类“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()) #< ----------------

请指出我的错误。 提前非常感谢您。

python attributes private
1个回答
0
投票

这是一个简单的错字 - 没有什么复杂的事情发生。您在

__isOnSale
中对
SetIsOnSale
的分配中有一个双重等于(即测试相等性)。将其更改为单个等于,您就会被排序。

© www.soinside.com 2019 - 2024. All rights reserved.