class Foo:
def __init__(self, *args, **kwargs):
...
def some_method(self):
...
return something
我有这个示例类。我想做的是,当我创建一个实例时,它应该立即返回一个特定方法的结果
我知道我可以通过Foo().some_method()
来做到这一点,但是否有任何方法可以通过创建一个实例来做到这一点
我试着这么做
class Foo:
def __init__(self, *args, **kwargs):
...
return self.some_method()
def some_method(self):
...
return something
但是它说TypeError: __init__() should return None, not 'object()'
__init__
方法实际上并不返回新实例;当您通过写入Foo()
来构造对象时,您不是直接调用__init__
,而是调用__new__
,而__new__
方法通过调用__init__
来初始化实例。因此,您可以通过覆盖__new__
来更改Foo()
返回的内容:或者,您可以使用类装饰器将
Foo
替换为创建实例、调用方法并返回结果的函数:也就是说,只编写一个helper函数几乎总是更好的,这样类
Foo
仍然可以以正常的方式用于其他目的(例如测试):由于无法从构造函数返回任何内容,因此可以使用类似于factory模式的内容:
打印出:
相关问题 更多 >
编程相关推荐