Pythonグローバル/パッケージエイリアス実装クラス

python python-2.7
Pythonグローバル/パッケージエイリアス実装クラス

これは簡単な質問です。

クラスレベルを “エイリアス”できるようにしたいので、パッケージレベルで実装を交換できます。 私はコード全体にX個の「import X as bah」を散在させたくありません…​

Aka. 以下のようなことができますか?

class BaseClass(object):
   def __init__(self):  pass
   def mymthod(self): pass
   def mymthod1(self): pass
   def mymthod2(self): pass

class Implementation(BaseClass):
   def __init__(self):
       BaseClass.__init__()

別のパッケージ…​

#I dont want thse scattered through out modules,
#i want them in one place where i can change one and change implementations
#I tried putting it in the package init but no luck
import Implementation as BaseClassProxy


class Client(BaseClassImpl):
    def __init__(self):
       BaseClassImpl.__init__(self)

  1  0


ベストアンサー

どのファイルでも(これが最適なのは、おそらく「実装」が定義されている場合はどこでもかまいません):

BaseClassProxy = Implementation

クラスはPythonのファーストクラスオブジェクトであるため、ほとんどの変数にバインドして同じ方法で使用できます。 この場合、クラスのエイリアスを作成できます。

5


ただ何かを置きます

BaseClassProxy = Implementation

モジュールで、次を実行します。

from module import BaseClassProxy

2


タイトルとURLをコピーしました