在Python中对相关函数进行分组

时间:2014-03-06 06:46:46

标签: python

假设我有一个功能spamham的模块,它使用函数eggsfoo

def spam():
    eggs()
    foo()
    ...

def ham():
    eggs()
    foo()
    ...

现在,eggsfoo仅由spamham使用,因此在模块级别公开它们没有意义。我可以将其名称更改为_eggs_foo,以表明它们仅供内部使用,但这并未真正确定spamham,{{1}之间的关系}和eggs

所以,我可以创建一个容器类来保存这些函数:

foo

但这看起来很滑稽,因为我希望用户不要实例化class SpamHam: @staticmethod def _eggs(): ... @staticmethod def _foo(): ... @staticmethod def spam(): ... @staticmethod def ham(): ... 并仅使用它来调用静态方法。另外,当我想要的是在其方法之间建立某种关系时,使用类似乎并不合适。

我可以创建一个名为SpamHam的单独模块,并将这四个函数放入其中,但spamhamspam确实属于他们已经存在的模块。

那么,在Python中建立这种关系的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

总的来说,我建议不要将这些事情视为功能之间的具体关系。函数应该是一个独立的代码单元 1 。我的中心论点是,你不应该认为eggs属于spamhameggs不应该关注spamhambacontoast是否有人调用它。重要的是,eggs的名称尽可能清楚地让您立即了解所做的功能 2

诀窍是弄清楚你希望外面的人有权访问哪些功能...这决定了它是eggs(公共)还是_eggs(实施细节如有变更,恕不另行通知)正如你已经提到的那样。

1 这并不是说函数不能调用其他函数
2 最好正确关于函数做什么的想法... :)