在不覆盖的情况下创建依赖于另一个属性的 class 属性

Creating a class attribute dependent on another attribute without overwriting

我有 class Vehicle 有两个属性:pRangepBattery

车辆的 pRange 为 220、310、400 或 505 的机会均等。我希望 pBattery 属性的值取决于 pRange值。

这是我的代码:

class Vehicle:
    def __init__(self, pRange, pBattery):
        self.pRange = np.random.choice(list(pRange), p = list(pRange.values()))
        self.pBattery = pBattery
    

pRange = { 220 : 0.25, 310 : 0.25, 400 : 0.25, 505 : 0.25 } 

b = Vehicle(pRange, pBattery)

if b.pRange == 220:
    b.pBattery == 36
elif b.pRange == 310:
    b.pBattery == 47.5
elif b.pRange == 400:
    b.pBattery = 64
elif b.pRange == 505:
    b.pBattery = 95

print(b.pRange)
print(b.pBattery)

这实际上给出了正确的结果,但我确信有更有效的方法来做到这一点。

class Vehicle:
    def __init__(self, pRange):
        self.pBattteryDict = {220:36, 310:47.5, 400:64, 505:95}
        self.pRange = np.random.choice(list(pRange), p = list(pRange.values()))
        self.pBattery = self.pBattteryDict[self.pRange] 

pRange = { 220 : 0.25, 310 : 0.25, 400 : 0.25, 505 : 0.25 } 
b = Vehicle(pRange)

print(b.pRange)
print(b.pBattery)