【发布时间】:2022-01-06 00:34:01
【问题描述】:
原来我有这段代码,
class Foo:
def __init__(self, val:int):
self.val = val
def next(self) -> Foo:
"""
Returns:
Foo: Foo with value 1 bigger than the current
"""
return Foo(self.val+1)
其中,next() 方法是根据当前实例生成另一个 Foo 实例。
到目前为止它工作得很好,但是我已经阅读了python中的静态方法和类方法,似乎我应该为next()使用类方法,因为它是一个工厂方法(请指出如果我的想法错了!)
实现上述的最优雅的方式是什么?
【问题讨论】:
-
由于它使用的是
self中包含的信息,它似乎适合实例方法。 -
不清楚如何使用静态方法,因为您没有实例的状态(即
self.val)。 -
@khelwood,我明白你的意思了,我认为所有的“工厂方法”都应该是一个类方法,但现在看来,由于它使用来自实例的信息,它应该保持为实例方法
标签: python oop factory class-method