Ich habe eine große Klasse, die eine Menge Funktionen und Attribute hat. Die Instanzen werden aus Daten in einer entfernten Datenbank erstellt.Python: Verwenden Sie eine Klasse Methoden als statische, wenn es als Instanz Methoden implementiert
Der Prozess der Erstellung jeder Instanz ist sehr lang und schwer.
In Leistung Sake IVE erstellt eine Bunch-Klasse aus dieser schweren Klasse. Zugriff auf das Attribut ist einfach und funktioniert gut. das Problem ist, wie die Methoden aus dieser Klasse verwendet werden.
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
klar, daß diese dosent Arbeit, Gibt es eine Möglichkeit i staticly die Instanz-Funktion zugreifen können und das "Selbst" var außer Kraft setzen?
'Klasse' oder' def'? –
tnx, klasse. bearbeitet. – dbkoren
Was auch immer Sie tun, das ist ein riesiger HACK, der weit von einer korrekten/guten Lösung entfernt ist. Aber wenn Sie immer noch darauf bestehen, die Methoden/Funktionen einer anderen Klasse an "bunchClsA" -Instanzen zu binden, dann können Sie das in 'buncChlsA .__ getattr__' tun:' return types.MethodType (vars (clsA) [attr], self) 'Dies ist kein Code, auf den man stolz sein könnte. Wenn Sie dies in Ihren Quellen verwenden, empfehle ich, die Inhaberschaft dieser "Lösung" abzulehnen. Ich verstehe nicht, warum das besser ist, als die Methoden direkt in 'bunchClsA' zu schreiben. – pasztorpisti