ホームページ > バックエンド開発 > Python チュートリアル > Python はクラス属性またはメンバー関数を動的に追加するソリューションを実装します

Python はクラス属性またはメンバー関数を動的に追加するソリューションを実装します

WBOY
リリース: 2016-06-16 08:43:15
オリジナル
1593 人が閲覧しました

クラスに属性やメソッドを動的に追加させる必要がある場合があります。たとえば、プラグインを作成するときにこのメソッドを使用できます。設定ファイルを使用してロードする必要があるモジュールを指定し、ビジネスの拡張に応じて必要なモジュールを追加できます。

この記事では、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 関数を動的に追加できます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート