我有一个包含三个模块的包装(请参见下面的模块样板):
|____mypackage
| |______init__.py
| |____serial.py
| |____modbus.py
| |____base.py
base
有一个抽象类BaseClient
,它提供了更高级别的应用程序逻辑,用户可以通过该逻辑与底层的客户端实现进行交互。
serial
和modbus
都有一个提供高级联网逻辑的类,我现在将其称为BaseSerial
和BaseModbus
。这些模块还具有几个类,它们是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准则,并且遇到了这个元设计问题的障碍。我想尽可能地对这个项目进行过时的证明。