gpt4 book ai didi

Python __init__ 和 classmethod,它们必须具有相同数量的参数吗?

转载 作者:太空狗 更新时间:2023-10-30 02:15:36 26 4
gpt4 key购买 nike

所以 classmethods 可以用作 python 中的替代“构造函数”,它们绑定(bind)到类而不是实例,到目前为止非常清楚。但我的问题是,是否必须在类方法的返回实例中具有与 __init__ 中相同数量的参数。更确切地说:

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

@classmethod
def alternative_init(cls,name,surname):
return cls(name,surname)

如果我尝试创建一个实例 Myclass("alex") 工作正常,但是如果我尝试创建一个实例 Myclass.alternative_init("alex","james") 我有一个 TypeError ,因为我传递给许多参数,而 init 只接受 2 。我错过了什么吗?

最佳答案

__init__ 只接受一个参数,名字。因此,您可以将 namesurname 传递给 cls,但不能同时传递两者。但是,您可以在 classmethod 中创建一个类实例,并添加一个额外的参数:

class MyClass(object):
def __init__(self,name):
self.name=name
def __setattr__(self, name, val):
self.__dict__[name] = val
@classmethod
def alternative_init(cls,name,surname):
v = cls(name)
v.surname = surname
return v

关于Python __init__ 和 classmethod,它们必须具有相同数量的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370769/

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