相似模块之间的类命名约定?

时间:2019-05-24 15:50:50

标签: python oop naming-conventions

我有一个包含三个模块的包装(请参见下面的模块样板):

|____mypackage
| |______init__.py
| |____serial.py
| |____modbus.py
| |____base.py

base有一个抽象类BaseClient,它提供了更高级别的应用程序逻辑,用户可以通过该逻辑与底层的客户端实现进行交互。

serialmodbus都有一个提供高级联网逻辑的类,我现在将其称为BaseSerialBaseModbus。这些模块还具有几个类,它们是BaseClient的具体实现,并且还从它们各自的BaseSerial / BaseModbus类继承。

我的问题是:对于BaseSerial / BaseModbus类之类的类,是否有任何标准/首选的命名约定?(对我来说,似乎给它们起了相同的名称,例如BaseNetworking会更简洁,更直观,但我也可以看到这可能会引起问题)

或者,可能更相关的问题是:

  • 此软件包结构是否是很好的做法?
  • 这些类都应该位于同一个模块中,从而使我的问题不存在吗?
  • 是否有将抽象类与不同类型的具体实现分离为单独的模块的优点,还是设计过于分散?

我通读了PEP-8 Naming Conventions,但找不到与命名空间命名类有关的任何东西,和/或如何解释不同命名空间中类似类的名称。此外,我找不到关于如何最好地将抽象与具体实现分离(或不分离)的评论。

下面是我正在描述的程序包的样板实现:

base样板:

class BaseClient:
    def doAppLogic(self):
        ....

    def read(self):
        raise NotImplementedError

    def connect(self):
        raise NotImplementedError

serial样板:

import base

class BaseSerial:
    def connect(self):
        ...

class SerialSubclass1(BaseSerial, base.BaseClient):
    def read(self):
        if self.connect():
            ...

modbus样板:

import base

class BaseModbus:
    def connect(self):
        ...

class MobusSubclass1(BaseModbus, base.BaseClient):
    def read(self):
        if self.connect():
            ...

目前,我的工作正常。但是,我一直在花时间重构我的项目,以使其尽可能接近PEP准则,并且遇到了这个元设计问题的障碍。我想尽可能地对这个项目进行过时的证明。

0 个答案:

没有答案