假设我在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)
实际上,我更喜欢后者,因为我不希望将"厨房水槽"分配给自己.
谢谢.
你可以使用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)
我倾向于后一种可能性,特别是如果该类具有其他"非标志"属性.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |