我的问题可能更多地与OOP相关联而不是python。我写了一个类来描述一个分子,然后我写了一个函数,以便从特定的文件格式创建一个分子对象:fromFILE
。因此,例如,当我使用我的班级时,我会执行以下操作:
import mymodule
mol = mymodule.fromFILE("toto")
mol.method()
...
我的问题是组织事物的好方法是什么。函数fromFILE()是否属于类的一部分,如果是,那么写这个的最佳方法是什么?
到目前为止,我只是将可用于创建此类的类和函数放入同一模块中,但我不知道这是否是最好的方法。
答案 0 :(得分:8)
你可以把它变成一个类方法:
class Molecule(object):
# ...
@classmethod
def fromFile(cls, filename):
data = # ... parse data from filename ...
return cls(data)
这有一个额外的好处,即子类可以简单地继承它,或者覆盖它来调整方法的作用(包括调用原始的父实现)。它提供了另一种类工厂:
import mymodule
mol = mymodule.Molecule.fromFile('toto')
整齐地将这个工厂与班级本身分组。
答案 1 :(得分:0)
例如:
import repositories
mol = repositories.MoleculeRepository.FromFile('toto')