执行上一个Python对象

问题描述:

的许多属性相同的操作,我有以下Python对象:执行上一个Python对象

class car(object): 

    def __init__(self, name, cost, type, speed): 
     self.name = name 
     self.cost = cost 
     self.type = type 
     self.speed = speed 

    def get_name(self): return self.name 
    def get_cost(self): return self.cost 
    def get_type(self): return self.type 
    def get_speed(self): return self.speed 

然后我要执行相同的操作对象的一些参数。我想为每个指定的属性加1。这样做的

一种方法显然是:

obj = car('volvo', 100, 0, 5) 
obj.cost = obj.cost + 1 
obj.type = obj.type + 1 
obj.speed = obj.speed + 1 

但这浪费了几行代码。有没有办法做这样的事情:

attributesToModify = ['cost', 'type', 'speed'] 
for e in attributesToModify: 
    obj.e = obj.e + 1 
+0

看看[在Python中获取动态属性](https://stackoverflow.com/questions/13595690/getting-dynamic-attribute-in-python) – JGreenwell

我认为你正在寻找使用setattrgetattr

attributesToModify = ['cost', 'type', 'speed'] 
for e in attributesToModify: 
    setattr(obj, e, getattr(obj, e) + 1) 
+1

不完全:你需要使用'getattr'而不是'obj .e'。 –

+0

我发现,看着我的代码,我*只是*编辑我的代码,当你张贴。 :P – idjaw

你可以只添加一个方法到类:

def inc(self, i): 
    self.cost += i 
    self.type += i 
    self.speed += i 

然后递增:

obj.inc(1) 
+2

可读且清晰。 – Sait

+0

这对我的实际使用情况并不是最好的。我有5个属性,我想通过+/-属性值将它们改变20%,并且每次只改变一个属性。 – Apollo

+0

@Apollo,这一切都可以在该方法中完成。一旦你知道你想要做什么,你可以采取其他参数。 –