gpt4 book ai didi

python - 如何从同一个类的类方法调用实例方法

转载 作者:太空狗 更新时间:2023-10-29 18:32:57 25 4
gpt4 key购买 nike

我有一个类如下:

class MyClass(object):
int = None
def __init__(self, *args, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)

def get_params(self):
return {'int': random.randint(0, 10)}

@classmethod
def new(cls):
params = cls.get_params()
return cls(**params)

我希望能够做到:

>>> obj = MyClass.new()
>>> obj.int # must be defined
9

我的意思是不创建 MyClass 的新实例,但显然没那么简单,因为调用 MyClass.new() 会抛出 TypeError: unbound method get_params () 必须以 MyClass 实例作为第一个参数调用(没有任何结果)

有什么办法可以做到吗?谢谢。

最佳答案

不,您不能也不应该从没有实例的类中调用实例方法。这将非常糟糕。但是,您可以从实例方法调用类方法。选项是

  1. 使 get_param 成为类方法并修复对它的引用
  2. __init__ 调用 get_param,因为它是一个实例方法

您可能还对 AttrDict 感兴趣因为这看起来像你正在尝试做的。

关于python - 如何从同一个类的类方法调用实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16427379/

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