在Python中命名接口和抽象类的约定是什么? PEP 8没有讨论这个问题。例如,在Java中,接口通常以“I”前缀命名。在PHP(名称空间之前)中,抽象类通常以“_Abstract”后缀命名。
(我意识到Python主义者并不热衷于接口,也许这就是为什么我在这个主题上找不到多少共识的原因。但是接口和抽象类的使用不是我的问题。)
答案 0 :(得分:7)
除了PEP8之外,我不知道在这方面有任何社区范围的标准,但没有具体解决这个问题。我建议你做任何你最熟悉的团队,但最重要的是是一致的。
答案 1 :(得分:5)
我认为命名一个带有I
前缀的接口是完全可以接受的。
e.g:
IFoo
IPublishable
几年前我使用了Zope Interfaces。我注意到大多数代码库使用了这个约定。我们的团队也做了。
我们更喜欢IFoo与FooInterface或IFooInterface
答案 2 :(得分:1)
我会看到数字塔(来自numbers
),集合ABCs(来自collections.abc
),或其他核心ABC(例如importlib.abc
)最为“Pythonic” “这样做的方法。
这样做的共识是将它们按原样命名,让人类理解将它们视为抽象的。