gpt4 book ai didi

python - 改进 __init__ ,其中 args 直接分配给成员

转载 作者:太空狗 更新时间:2023-10-30 00:37:26 25 4
gpt4 key购买 nike

我发现自己用这样的构造函数编写了很多类:

class MyClass(object):
def __init__(self, foo, bar, foobar=1, anotherfoo=None):
self.foo = foo
self.bar = bar
self.foobar = foobar
self.anotherfoo = anotherfoo

这是不好的代码味道吗? Python 是否提供更优雅的处理方式?

我的类甚至一些构造函数不仅仅是我所展示的,但我通常有一个参数列表传递给构造函数,这些参数最终被分配给类似命名的成员。我将一些参数设为可选,以指出执行以下操作的问题:

class MyClass(object):
def __init__(self, arg_dict):
self.__dict__ = arg_dict

最佳答案

如果他们是 kwargs,你可以这样做:

def __init__(self, **kwargs):
for kw,arg in kwargs.iteritems():
setattr(self, kw, arg)

posargs 有点棘手,因为您无法以一种很好的方式获取命名信息。

如果你想提供默认值,你可以这样做:

def __init__(self, **kwargs):
arg_vals = {
'param1': 'default1',
# ...
}
arg_vals.update(kwargs)
for kw,arg in arg_vals.iteritems():
setattr(self, kw, arg)

关于python - 改进 __init__ ,其中 args 直接分配给成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3682137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com