设置类变量的Pythonic方法是什么?

2024-04-05

也许我问错了问题。我有这样的代码:

class ExpressionGrammar(Grammar):
  def __init__(self, nonterminals, terminals, macros, rules, precedence, nonterminal_name = '_expr'):
    self.nonterminals = nonterminals
    self.terminals = terminals
    self.rules = rules
    self.macros = macros
    self.precedence = precedence
    self.nonterminal = nonterminal

我发现总是必须 self.x = x 是多余的。我知道 python 试图避免重复,那么做这样的事情的正确方法是什么?


您可以通过以下方式避免这样做:

class C(object):
    def __init__(self, x, y, z, etc):
        self.__dict__.update(locals())

那么所有这些参数都成为成员(包括 self 参数)。所以你可以用以下方法删除它:self.__dict__.pop('self')

我不知道这种方法有多Pythonic,但它确实有效。

附: 如果你想知道什么__dict__是的,它是一个字典,以以下形式保存实例的每个成员{'member1': value, 'member2': value}

locals()是一个返回带有局部变量的字典的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置类变量的Pythonic方法是什么? 的相关文章

随机推荐