我设置了一些像表格一样的词典,例如:
SpdPts0 = {'Init Bonus':0,'Dodge Bonus':0,'Crit %':0,'Finness Bonus':0}
SpdPts1 = {'Init Bonus':2,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
SpdPts2 = {'Init Bonus':4,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
DefPts0 = {'Block':0,'Dodge':0,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts1 = {'Block':5,'Dodge':5,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts2 = {'Block':10,'Dodge':10,'Absorb':0,'Deflect':0,'MaxDefProgs':1}
我有一个这样的课程,例如:
class Robot:
def __init_(self,name):
self.name = name
self.Dodge = 0
self.PtsSpeed = 2
self.PtsDefence = 2
当机器人获得要由用户分发的点数时,(.PtsSpeed,.PtsDefence)将会增加功能。
如何更新class属性" self.Dodge"通过引用.PtsSpeed和.PtsDefence从上面的变量求和(' Dodge'和#39; Dodge Bonus')键? 或者请告诉我一种更容易的方式。
答案 0 :(得分:0)
class Robot:
def __init__(self,name,rob_type=None):
self.name = name
self.PtsSpeed = 2
self.PtsDefence = 2
self.Dodge = self.dodge_cal(rob_type)
def dodge_cal(self, value=None):
if value:
return value['Dodge']
else:
return self.PtsSpeed + self.PtsDefence
SpdPts0 = {'Init Bonus':0,'Dodge Bonus':0,'Crit %':0,'Finness Bonus':0}
SpdPts1 = {'Init Bonus':2,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
SpdPts2 = {'Init Bonus':4,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
DefPts0 = {'Block':0,'Dodge':0,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts1 = {'Block':5,'Dodge':5,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts2 = {'Block':10,'Dodge':10,'Absorb':0,'Deflect':0,'MaxDefProgs':1}
bob = Robot('bob',DefPts2)
print(bob.Dodge) #10
foo = Robot('foo')
print(foo.Dodge) #4
创建一个根据传入的内容计算它的函数。这是一种方法。有很多方法可以做到这一点。如果未传递rob_type
,则默认情况下通过添加对象的PtsSpeed + PtsDefence
来计算它。 rob_type
接收完整字典并确保其具有正确的密钥'Dodge'
。然后,您可以通过制作小函数来计算更多的统计数据,因为您接受字典并将其存储在rob_type
中,所以您想要做什么并不重要。
我会将您的SpdPts
与您的DefPts
结合起来,或者将它们结合起来,但这又是超级广泛的,这取决于您希望如何实施。祝你好运。