为了账号安全,请及时绑定邮箱和手机立即绑定

Python将类属性导入方法本地名称空间

Python将类属性导入方法本地名称空间

蓝山帝景 2021-03-19 18:15:10
我一直想知道是否有更简单的方法将类属性分配给方法本地名称空间。例如,在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)

我不知道这是否危险。如果有人可以对此发表评论,那就太好了。


查看完整回答
反对 回复 2021-03-31
?
梦里花落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)

(尽管我无法理解为什么您需要将类属性复制到方法本地名称空间中)


查看完整回答
反对 回复 2021-03-31
  • 4 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信