与 Python 相比,我的问题可能更多地与 OOP 相关。我写了一个类来描述一个分子,然后我写了一个函数来从特定的文件格式创建一个分子对象:fromFILE
。因此,例如,我在使用我的类(class)时执行以下操作:
import mymodule
mol = mymodule.fromFILE("toto")
mol.method()
...
我的问题是组织事物的好方法是什么。 fromFILE() 函数是否应该是类的一部分?如果是,最好的编写方法是什么?
到目前为止,我只是将类和可用于创建此类的函数放在同一个模块中,但我不知道这是否是最好的方法。
最佳答案
你可以把它变成一个类方法:
class Molecule(object):
# ...
@classmethod
def fromFile(cls, filename):
data = # ... parse data from filename ...
return cls(data)
这有一个额外的好处,即子类可以简单地继承它,或覆盖它以调整方法的作用(包括调用原始父实现)。它提供了一个替代类工厂:
import mymodule
mol = mymodule.Molecule.fromFile('toto')
将这个工厂与类本身巧妙地组合在一起。
关于从函数创建 Python 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297932/