也许我问的是错误的问题.我有这样的代码:
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试图避免重复,那么做这样的事情的正确方法是什么?
你可以避免这样做:
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的函数.