Python3动态类属性

2024-09-27 09:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我正在尝试更改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(),但我想不通。 谢谢你的帮助!你知道吗


Tags: inprojectfor属性timerangewhereselect
1条回答
网友
1楼 · 发布于 2024-09-27 09:34:09

解决方案是使用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))

相关问题 更多 >

    热门问题