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

时间:2011-05-17 02:56:13

标签: 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

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

2 个答案:

答案 0 :(得分:9)

你可以避免这样做:

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

然后所有这些参数都成为成员(包括self参数)。因此,您可以使用以下代码将其删除:self.__dict__.pop('self')

我不知道这种方法是如何pythonic的,但它确实有效。

PS: 如果您想知道__dict__是什么,它是一个以{'member1': value, 'member2': value}

形式保存实例的每个成员的字典

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

答案 1 :(得分:1)

你总是可以这样做:

self.__dict__.update(locals())