在这里阅读了几篇文章后,我仍然对以函数作为值来实现类动态属性的正确方法感到有些困惑。
自从我接触 python 以来已经有一段时间了,现在我有点卡住了。
我有以下课程:
class RunkeeperUser(object):
def __init__(self, master):
self.master = master
# Get the user methods and set the attributes
for user_method, call in self.master.query('user').iteritems():
# Should not get the value but bind a method
setattr(
self,
user_method,
self.master.query(call)
)
def get_user_id(self):
return self.user_id
def query(self, call):
return self.master(call)
现在正如您在设置属性时看到的那样,它直接执行 self.master.query(call) 并且在访问属性时已经有结果。
问题是如何使这个属性值在运行时动态化并且尚未执行?
我试过了:
setattr(
self,
user_method,
lambda: self.master.query(call)
)
但由于某种原因,这并不能很好地工作。有任何帮助/指导或最佳原则来实现所描述的结果吗?