我一直想知道是否有更简单的方法将类属性分配给方法本地名称空间。例如,在dosomething方法中,我显式地引用self.a和self.b:class test: def __init__(self): self.a = 10 self.b = 20 def dosomething(self): a = self.a b = self.b return(a + b)但是有时我有很多变量(超过10个),而且键入和查看时会很乱-var = self.var在方法的开头我会有一堆语句。有什么办法可以做得更紧凑吗?(我知道更新local()不是一个好主意)编辑:理想情况下,我想要的是:def dosomething(self): populate_local_namespace('a', 'b') return(a + b)
4 回答
皈依舞
TA贡献1851条经验 获得超3个赞
我发现了另一种方法:
def dosomething(self):
for key in ['a', 'b']:
exec('{} = self.{}'.format(key, key))
return(a + b)
我不知道这是否危险。如果有人可以对此发表评论,那就太好了。
梦里花落0921
TA贡献1772条经验 获得超6个赞
通过将变量存储在字典中,您可以通过权衡轻松解决此问题。
data = {}
copy_to_local_variables = ["a", "b", "c", "d"]
for var_name in copy_to_local_variables:
data[var_name] = getattr(self, var_name)
(尽管我无法理解为什么您需要将类属性复制到方法本地名称空间中)
添加回答
举报
0/150
提交
取消