0
私は多くの関数と属性を持つ大きなクラスを持っています。 インスタンスはリモートデータベースのデータから作成されます。Python:インスタンスメソッドとして実装されている場合は、クラスメソッドを静的に使用します。
各インスタンスを作成するプロセスは非常に長く、重いです。
パフォーマンスクラスでは、この重いクラスからバンチクラスを作成しました。 属性にアクセスするのは簡単で、効果的です。 問題はそのクラスのメソッドを使用する方法です。
例:
class clsA():
def __init__(self,obj):
self.attrA=obj.attrA
def someFunc(self):
print self
class bunchClsA(bunch):
def __getattr__(self, attr):
# this is the problem:
try:
#try and return a func
func = clsA.attr
return func
except:
# return simple attribute
return self.attr
明らかに、このdosent作品、私は静的にインスタンス機能にアクセスし、「自己」VARをオーバーライドすることができます方法はありますか?
'class'または' def'ですか? –
tnx、class。編集されました。 – dbkoren
何をしていても、これは正しい/良い解決策から遠い巨大なHACKです。しかし、あなたがまだ他のクラスのメソッド/関数を 'bunchClsA'インスタンスに束縛しようとしているなら、' buncChlsA .__ getattr__'のようにすることができます: 'return types.MethodType(vars(clsA)[attr]、self)'これは誇りに思うかもしれないコードの一部ではありません。あなたのソースでこれを使用する場合は、この「ソリューション」の所有権を放棄することをお勧めします。私はなぜこのメソッドを 'bunchClsA'に直接書くよりも良いのか分かりません。 – pasztorpisti