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

Sco*_*ott 3 python

也许我问的是错误的问题.我有这样的代码:

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
Run Code Online (Sandbox Code Playgroud)

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

JBe*_*rdo 9

你可以避免这样做:

class C(object):
    def __init__(self, x, y, z, etc):
        self.__dict__.update(locals())
Run Code Online (Sandbox Code Playgroud)

然后所有这些论点都成为成员(包括自我论证).所以你可以删除它:self.__dict__.pop('self')

我不知道这种方法是如何pythonic,但它的工作原理.

PS:如果你想知道是什么__dict__,它是一个dict,它保存表单中每个实例的成员{'member1': value, 'member2': value}

locals() 是一个返回带有局部变量的dict的函数.