假设我有一个功能为spam
和ham
的模块,它们使用函数eggs
和foo
。现在在Python中分组相关函数
def spam():
eggs()
foo()
...
def ham():
eggs()
foo()
...
,eggs
和foo
只使用spam
和ham
,所以它没有任何意义,以在模块级揭露他们。我可以将它们的名称更改为_eggs
和_foo
以表明它们用于内部使用,但这并不确实建立spam
,ham
,eggs
和foo
之间的关系。
所以,我可以做一个容器类来保存这些函数是这样的:
class SpamHam:
@staticmethod
def _eggs():
...
@staticmethod
def _foo():
...
@staticmethod
def spam():
...
@staticmethod
def ham():
...
但是,因为我希望用户不要实例SpamHam
,只用它来调用静态方法,这似乎skethy。另外,当我想要的是在它的方法之间建立一些关系时,使用一个类似乎并不正确。
我可以创建一个名为spamham
一个独立的模块,并把这些四个功能成,但spam
和ham
真的做“属于”他们已经在该模块。
那么,什么是建立这种正确的方法Python中的关系?
还考虑在你的模块上使用'__all__'。 – kindall
@kindall - 当然。这没有什么坏处。我想它会给出另一层“顺便说一句,这是一个公开的名字”。但个人而言,我从来没有发现'__all__'的很多用途。 ''从blah导入'''应该得到他们的代码发生的任何不好的事情;-) – mgilson
'help(modulename)'尊重'__all__',所以它在我看来非常有用。 – kindall