我正在向python包中添加抽象类,如下所示:
class AbstractClass(ABC):
@abstractmethod
def do_something(self):
pass
将有多个子类从AbstractClass
继承,如下所示:
class SubClass(AbstractClass):
def do_something(self):
pass
我想知道python包是否有关于抽象类的约定,但我不知道
我意识到这是相当主观的。我是在征求意见,而不是什么是“对”或“错”
谢谢
根据您的风格指南,可能会有。在我看来,唯一的一件事是,任何抽象函数如果没有实现都会产生错误,并且应该是抽象方法docstring的一部分
例如,如果您正在使用numpystyle docstrings,这样的东西是理想的:
我想不出什么惯例。如果这仅仅是一个项目的全部内容,那么我希望将抽象类与具体的子类放在一起,无论它们处于什么级别。如果所有子类都在一个文件中,那么我也会将抽象类放在该文件中。如果所有子类都在dir中的单个文件中,我会将抽象类放在它自己的文件中紧挨着它们。我之所以将抽象类放在其他地方,是因为我要分离出可以在其他项目中重用的实用程序代码。简而言之,抽象类只是一段代码。只是另一门课。像对待其他人一样对待它
就命名而言,给定类的性质/功能的自然命名通常就足够了。如果您的抽象类是Animal,而您的子类是Goat、Horse等,我认为没有理由将您的抽象类称为AbstractAnimal,因为已经很清楚发生了什么……您不会直接实例化Animal。另外,如果你看到一个想重用它的类,你看到其中有一个抽象方法,那么你就知道它是抽象的
相关问题 更多 >
编程相关推荐