gpt4 book ai didi

python - 如何避免 __init__ 中的 "self.x = x; self.y = y; self.z = z"模式?

转载 作者:IT老高 更新时间:2023-10-28 12:22:46 28 4
gpt4 key购买 nike

我看到类似的模式

def __init__(self, x, y, z):
...
self.x = x
self.y = y
self.z = z
...

非常频繁,通常带有更多参数。有没有避免这种乏味重复的好方法?类是否应该从 namedtuple 继承?

最佳答案

免责声明:似乎有几个人关心提出这个解决方案,所以我将提供一个非常明确的免责声明。您不应使用此解决方案。我仅将其作为信息提供,因此您知道该语言可以做到这一点。剩下的答案只是展示语言能力,而不是支持以这种方式使用它们。


将参数显式复制到属性中并没有什么问题。如果 ctor 中有太多参数,有时会被认为是代码异味,也许您应该将这些参数分组到更少的对象中。其他时候,这是必要的,没有任何问题。 无论如何,明确地这样做是要走的路。

但是,既然您问的是如何完成(而不是是否应该完成),那么一种解决方案是:

class A:
def __init__(self, **kwargs):
for key in kwargs:
setattr(self, key, kwargs[key])

a = A(l=1, d=2)
a.l # will return 1
a.d # will return 2

关于python - 如何避免 __init__ 中的 "self.x = x; self.y = y; self.z = z"模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35190877/

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