对python对象的许多属性执行相同的操作

时间:2015-10-04 21:45:48

标签: python

我有以下Python对象:

return { {1,1,1}, {1,2}, {2,1}, {3} };

然后我想对对象的某些参数执行相同的操作。我想为每个指定的属性添加1。

这样做的一种方法显然是:

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

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

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

2 个答案:

答案 0 :(得分:3)

你可以在课堂上添加一个方法:

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

然后传递增量:

obj.inc(1)

答案 1 :(得分:2)

我认为您希望使用setattrgetattr

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