Ich habe eine Klasse und ich möchte alle Methoden in einer Liste innerhalb der Klasse, ich will es funktioniert, auch wenn ich zwei Methoden mit dem gleichen Namen haben, mein Problem ist, kann ich nicht Greife auf die Klasse zu, um die Methoden dort zu platzieren. kann sagen, ich habe den DekorateurSpeichern Sie alle Klassenmethoden mit Decorator
def dec(func):
class = ????
class.methods.append(func)
return func
und ich habe die Klasse
class A(object):
methods = []
@dec
def a(self):
print 2
@dec
def a(self):
print 3
ich will
A.methods[0](A())
A.methods[1](A())
(A() becuase those methods need self)
oder etwas tun können, wie die
ich schon lese viele Probleme wie diese und es sieht so aus, als ob was ich will, ist nicht wirklich möglich, da A ist nicht vorhanden, wenn der Dekorator aufgerufen wird, aber vielleicht gibt es eine Möglichkeit, auf seine Variablen zuzugreifen, da der Dekorator darin läuft?
Aber Sie * nicht * haben zwei Methoden mit dem gleichen Namen. –
Wie wäre es damit? https://ideone.com/FIa3C6 – falsetru
@DanielRoseman: aber Sie * können * sie zur gleichen Liste hinzufügen, wie sie in der Reihenfolge ausgeführt werden. Die Klasse erhält nur die letzte, da sie tatsächlich die erste im Namensraum des Klassenkörpers ersetzt, aber das bedeutet nicht, dass der Dekorator nicht ausgeführt wird und Sie einen Verweis auf das erste Funktionsobjekt haben, bevor es ersetzt wird durch die Sekunde. –