是否有从python中的函数参数创建成员变量的简写?

Bit*_*iot 0 python attributes

假设我在python中有一个构造函数:

 def __init__(self, bBoolFlags_a_Plenty):
     self.bBoolFlags_a_Plenty = self.bBoolFlags_a_Plenty
     [...]  # one line for each bool flag passed in.
Run Code Online (Sandbox Code Playgroud)

是否有分配传递给init()具有相同的名称作为函数的参数类的成员变量/属性函数的参数,而无需手工编写每一个方法吗?

在范围更为有限的事情中,也许一个班轮就可以做到.就像是:

self.* = ( arg_bool1, arg_bool2, arg_bool3, arg_bool4)
Run Code Online (Sandbox Code Playgroud)

实际上,我更喜欢后者,因为我不希望将"厨房水槽"分配给自己.

谢谢.

seb*_*ian 6

你可以使用kwargs:

def __init__(self, **flags):
    for flag, value in flags.iteritems():
        setattr(self, flag, value)
Run Code Online (Sandbox Code Playgroud)

或者@bgporter正确建议__dict__直接使用(假设您没有定义__slots__属性):

def __init__(self, **flags):
    self.__dict__.update(flags)
Run Code Online (Sandbox Code Playgroud)

根据"大量"实际指定的数量,无论如何,将它们保存在单独的dict中可能更容易:

def __init__(self, **flags):
    self.flags = flags
Run Code Online (Sandbox Code Playgroud)

我倾向于后一种可能性,特别是如果该类具有其他"非标志"属性.

  • 甚至更容易,你可以做`self .__ dict __.update(flags)` (3认同)