用于命名派生类的Pythonic方法

时间:2011-11-24 17:39:23

标签: naming-conventions python

我无法弄清楚派生的更可接受的命名约定是什么 类。假设我们有一个基类Fruit,我们从中派生出类,为apple, 橙子和西番莲果。一致认为基类的名称应该出现在 派生的,但它应该出现在类名的开头还是结尾?

哪个更像Pythonic:FruitAppleFruitOrangeFruitPassionFruitAppleFruitOrangeFruitPassionFruitFruit

3 个答案:

答案 0 :(得分:5)

使用常识。

在您的示例中,正如其他人所讨论的那样,Fruit部分显然是多余的。仅使用AppleOrange等。让我们考虑使用其他示例。

如果我有一个名为Plugin的基类,我会将派生类命名为FormattingPlugin,我将其视为“执行格式化的插件”。替代方法PluginFormatting读作“插件格式”。我猜这个阅读是主观的,所以要用自己最好的判断。 但是不要只将它命名为Formatting,因为与水果示例不同,这不完全描述了该类的作用。

答案 1 :(得分:4)

“共识”是一个难以捉摸的概念。您可以做的是查看标准库中使用的命名约定,以了解Python社区中的标准。

例如,这是一个相关类和子类的广泛列表:http://docs.python.org/library/internet.html

最后,这是一个品味的问题,这个原则是用户最清楚的类名是最好的名字。

答案 2 :(得分:1)

在上面列出的具体示例中,每个人都知道这些内容是成果,所以我认为没有必要在子类名称中包含Fruit

更一般地说,无论你选择什么都是好的,只要它是一致的。

我倾向于喜欢法国首先命名对象和描述符(形容词)的方式,所以如果我必须选择,我希望FruitAppleFruitOrange等等{{1} },AppleFruit(和冗余的OrangeFruit :))。它还具有以字母顺序列出集群中所有子类的优势,这可能有助于某些IDE或代码完成。

另一方面,如果您将标准库作为模型,您将找到以PassionFruitFruit格式命名子类的首选项。例如,日志记录模块将SpecificBaseStreamHandler定义为FileHandler的子类。