我无法弄清楚派生的更可接受的命名约定是什么
类。假设我们有一个基类Fruit
,我们从中派生出类,为apple,
橙子和西番莲果。一致认为基类的名称应该出现在
派生的,但它应该出现在类名的开头还是结尾?
哪个更像Pythonic:FruitApple
,FruitOrange
和FruitPassionFruit
或AppleFruit
,
OrangeFruit
和PassionFruitFruit
?
答案 0 :(得分:5)
使用常识。
在您的示例中,正如其他人所讨论的那样,Fruit
部分显然是多余的。仅使用Apple
,Orange
等。让我们考虑使用其他示例。
如果我有一个名为Plugin
的基类,我会将派生类命名为FormattingPlugin
,我将其视为“执行格式化的插件”。替代方法PluginFormatting
读作“插件格式”。我猜这个阅读是主观的,所以要用自己最好的判断。
但是不要只将它命名为Formatting
,因为与水果示例不同,这不完全描述了该类的作用。
答案 1 :(得分:4)
“共识”是一个难以捉摸的概念。您可以做的是查看标准库中使用的命名约定,以了解Python社区中的标准。
例如,这是一个相关类和子类的广泛列表:http://docs.python.org/library/internet.html
最后,这是一个品味的问题,这个原则是用户最清楚的类名是最好的名字。
答案 2 :(得分:1)
在上面列出的具体示例中,每个人都知道这些内容是成果,所以我认为没有必要在子类名称中包含Fruit
。
更一般地说,无论你选择什么都是好的,只要它是一致的。
我倾向于喜欢法国首先命名对象和描述符(形容词)的方式,所以如果我必须选择,我希望FruitApple
,FruitOrange
等等{{1} },AppleFruit
(和冗余的OrangeFruit
:))。它还具有以字母顺序列出集群中所有子类的优势,这可能有助于某些IDE或代码完成。
另一方面,如果您将标准库作为模型,您将找到以PassionFruitFruit
格式命名子类的首选项。例如,日志记录模块将SpecificBase
和StreamHandler
定义为FileHandler
的子类。