他のすべての小さなクラスから継承する大きなクラスを作成しようとする理由が何であるかはよくわかりません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
これで、クラスは単独で便利になり、ポート オブジェクトを共有します。