ホームページ >バックエンド開発 >Python チュートリアル >Python はクラス属性またはメンバー関数を動的に追加するソリューションを実装します
クラスに属性やメソッドを動的に追加させる必要がある場合があります。たとえば、プラグインを作成するときにこのメソッドを使用できます。設定ファイルを使用してロードする必要があるモジュールを指定し、ビジネスの拡張に応じて必要なモジュールを追加できます。
この記事では、Python でクラスの属性またはメンバー関数を動的に追加するためのソリューションを簡単に説明します。具体的な方法は次のとおりです。
まず、ulipad: mixin の実装を参照します。ここで行われることは比較的単純です。クラスを宣言し、クラスが初期化されるときに構成ファイルを読み取り、構成リストに従って特定のディレクトリ内のモジュールの下にある関数をロードします。関数は、モジュールを作成し、この関数をクラス関数のメンバーとして動的にロードします。
コードは次のとおりです:
class WinBAS(Bas): def __init__(self): self.__baslist = {} self.__Init_Modules() pass def __Init_Modules(self): import modplugs for m in modplugs.__moduleset__: mh = __import__('modules.' + m)# + '.' + m) ma = getattr(mh, m)# + '.' + m) ma = getattr(ma, m) setattr(self.__class__, m, ma)modplugs.py は次のようなモジュール構成ファイルです:
__moduleset__ = [ 'BAS_GetUserList', ]次に、 modules ディレクトリーの下に空の __init__.py ファイルを作成し、そのディレクトリーをパッケージに変更して、 modules ディレクトリーに実際の BAS_GetUserList 実装を作成します。 BAS_GetUserList ファイルには、次のような BAS_GetUserList 関数があります。
def BAS_GetUserList(self, strs): return [0, strs]このようにして、WinBAS クラスは BAS_GetUserList 関数を動的に追加できます。