我应该将抽象类放在 python 包中的什么位置?

Gar*_*son 5 python abstract-class conventions

我将抽象类添加到我的 python 包中,如下所示:

class AbstractClass(ABC):

    @abstractmethod
    def do_something(self):
        pass
Run Code Online (Sandbox Code Playgroud)

将有多个子类继承AbstractClass如下:

class SubClass(AbstractClass):

    def do_something(self):
        pass
Run Code Online (Sandbox Code Playgroud)

我想知道 python 包是否有关于我不知道的抽象类的任何约定。

  • 抽象类应该与子类分开,还是应该都在同一个目录中?
  • 抽象函数的命名怎么样,那里有什么约定?

我意识到这是相当主观的。我在征求意见,而不是“对”或“错”

谢谢!

Ste*_*eve 7

没有想到任何约定。如果这只是一个项目的全部内容,我希望将抽象类与具体子类放在它们所处的任何级别。如果所有子类都在一个文件中,那么我也会将抽象类放在该文件中。如果所有子类都在目录中的单个文件中,我会将抽象类放在它们自己的文件中。我将抽象类放在其他地方的原因是,如果我正在分离可以与其他项目重用的实用程序代码。简而言之,抽象类只是一段代码。又是一堂课。像对待任何其他人一样对待它。

就命名而言,给定类的自然命名通常就足够了。如果您的抽象类是 Animal,而您的子类是 Goat、Horse 等,我认为没有理由将您的抽象类称为 AbstractAnimal,因为已经很清楚发生了什么……您不会直接实例化 Animal . 此外,如果您正在查看一个考虑重用它的类,并且您在其中看到一个抽象方法,那么您就知道它是抽象的。