如何通过调用类方法直接创建类实例?使pipe成为MyClass实例
让类方法返回类实例并按指定顺序执行逻辑
要实现调用do_something后返回MyClass实例,且先执行类方法逻辑再调用构造函数,只需要在类方法末尾返回cls()即可——cls是类方法接收的当前类对象,调用cls()会触发__init__创建实例。
修改后的代码如下:
class MyClass: def __init__(self): self.my_attr = 42 print("Attribute initialized to", self.my_attr) @classmethod def do_something(cls): print("Doing something...") # 执行完类方法逻辑后,创建并返回类实例 return cls() pipe = MyClass.do_something() print(isinstance(pipe, MyClass)) # 输出 True
执行流程说明
- 调用
MyClass.do_something()时,先执行类方法内的print("Doing something...") - 接着执行
return cls(),触发MyClass的__init__方法,初始化实例属性并打印对应内容 - 最终
pipe变量接收的是MyClass的实例,因此isinstance(pipe, MyClass)返回True
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

