猿问

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

我一直想知道是否有更简单的方法将类属性分配给方法本地名称空间。例如,在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)


蓝山帝景
浏览 190回答 4
4回答

皈依舞

我发现了另一种方法:def dosomething(self):    for key in ['a', 'b']:       exec('{} = self.{}'.format(key, key))    return(a + b)我不知道这是否危险。如果有人可以对此发表评论,那就太好了。

梦里花落0921

通过将变量存储在字典中,您可以通过权衡轻松解决此问题。data = {}copy_to_local_variables = ["a", "b", "c", "d"]for var_name in copy_to_local_variables:    data[var_name] = getattr(self, var_name)(尽管我无法理解为什么您需要将类属性复制到方法本地名称空间中)
随时随地看视频慕课网APP

相关分类

Python
我要回答