关于for循环代码优化的问题

编了一段示例代码,大概如下:

class User(object):
    def __init__(self, school, trader):
        self.school = school
        self.trader = trader

class School(object):
    def __init__(self, id):
        self.id = id

class Trader(object):
    def __init__(self, num):
        self.num = num

school_1 = School(1)
trader_1 = Trader(1)
user = User(school_1, trader_1)

# search_arr 会根据须求变化
search_arr = ['school', 'id']

v = user
for field in search_arr:
    v = getattr(v, field)

print(v)

主要想完成根据“search_arr”的变化,动态获取“v”值,现在代码写出来了,使用了一个for循环,但是觉得不满意,想问一下有没有什么效率更高的方式,像列表循环或者迭代器的方式完成以上代码for的功能

阅读 3.1k
1 个回答
from functools import reduce
val = reduce(lambda x, y: x.__dict__[y], search_arr, user)
print(val)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题