Python 3动态类属性

时间:2017-08-28 07:35:43

标签: python object for-loop attributes

大家好我试图改变for循环中的属性,例如:

user.project_0   mitarbeiter.percent_0 
user.project_1   mitarbeiter.percent_1 
user.project_2   mitarbeiter.percent_2 
...



for x in range(10):
    for mitarbeiter in user.select().where(user.project_0 == projektnummer):
        # timedelta object
        working_time = ((mitarbeiter.gehen_1 - mitarbeiter.kommen_1) + (mitarbeiter.gehen_2 - mitarbeiter.kommen_2))
        complete_time += (working_time.seconds / 100) * mitarbeiter.percent_0

我尝试使用setattr()和type(),但我无法弄明白。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

解决方法是使用getattr()并格式化字符串。

for x in range(10):
    for mitarbeiter in user.select().where(getattr(user, 'project_{}'.format(x)) == projektnummer):
        working_time = ((mitarbeiter.gehen_1 - mitarbeiter.kommen_1) + (mitarbeiter.gehen_2 - mitarbeiter.kommen_2))
        complete_time += (working_time.seconds / 100) * getattr(mitarbeiter, 'percent_{}'.format(x))