J'ai une grande classe qui a beaucoup de fonctions et d'attributs. les instances sont créées à partir de données dans une base de données distante.Python: utilise une méthode de classe comme statique, quand elle est implémentée comme méthode d'instance
Le processus de création de chaque instance est très long et lourd.
En performance sake ive a créé une classe de grappes de cette classe lourde. donc l'accès à l'attribut est facile et fonctionne très bien. le problème est de savoir comment utiliser les méthodes de cette classe.
ex:
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
Il est clair que ce travail dosent, est-il un moyen que je pourrais accéder à la fonction d'instance staticly et remplacer le var "auto"?
'class' ou' def'? –
tnx, classe. édité. – dbkoren
Quoi que vous fassiez, c'est un énorme HACK qui est loin d'être une bonne/bonne solution. Mais si vous persistez à lier les méthodes/fonctions d'une autre classe aux instances de 'bunchClsA', vous pouvez le faire comme ceci dans' buncChlsA .__ getattr__': 'return types.MethodType (vars (clsA) [attr], self)' n'est pas un morceau de code dont on pourrait être fier. Si vous l'utilisez dans vos sources, je vous recommande de ne pas être propriétaire de cette "solution". Je ne comprends pas pourquoi est-ce mieux que d'écrire les méthodes directement dans 'bunchClsA'. – pasztorpisti