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试图避免重复,那么做这样的事情的正确方法是什么?
答案 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())