我不太确定您尝试创建一个master
从所有其他较小类继承的较大类的原因是什么,但首先想到的是设计可能是倒退的。
您可能想要做的是拥有一个基类,您的所有命令模块都可以为其子类化。您可以使用包作为智能命名空间来收集类似的功能,例如“网络”或“压缩”等。
class ToolBase(object):
# common functionality here
# class attributes
# base constructor
# methods: static, class, instance
pass
class Module1(ToolBase):
def __init__(self):
super(Module1, self).__init__()
class Module2(ToolBase):
def __init__(self):
super(Module2, self).__init__()
在这个基类示例中,每个子类都可以期望 ToolBase 的功能存在,包括来自构造函数的任何设置,例如数据库连接、套接字、资源。
也许是这样的项目结构:
pyPackage
__init__.py
# class ToolBase
# __all__ = ['network', 'compress']
network/
__init__.py
module1.py
# class Module1
compress/
__init__.py
module2.py
# class Module2
更新
作为使用基类并拥有共享“端口”对象的一种方式,您可以将其设为仅初始化一次的类级别属性:
class ToolBase(object):
_PORT = None
def __init__(self):
if self._PORT is None:
self._PORT = "PORT"
@property
def port(self):
return self._PORT
class Foo(ToolBase):
def go(self):
print self.port
现在您的类本身就很有用,并且将共享端口对象。