In JavaScript ist bekannt, dass Sie den Kontext von `this``` in Funktion durch`
apply``` ändern können.
Sozusagen können zur Laufzeit Methoden anderer Klassen verwendet werden.
Nach dem Umgehen scheint es, dass es auf Englisch als Ausleihmethode bezeichnet wird. Bedeutet es wörtlich "ausleihen"?
Beispiel
function A () {
this.value = 1;
}
function B () {
this.value = 2;
}
B.prototype.show = function show () {
console.log(this.value);
};
var a = A();
B.prototype.show.apply(a); //Es ist wie "ein leiht und verwendet Show, die eine Methode von B ist."
Ausführungsergebnis
1
Als ich heute mit jemandem aß, den ich lange nicht gesehen hatte, wurde ich gefragt: "Kann ich dasselbe mit Python machen?" In Python möchte ich zur Laufzeit `` `self``` ändern. Aus der Schlussfolgerung "Ich kann". Ich konnte es nicht sofort erklären, also beschloss ich, es in Qiita zu schreiben.
In Python
class A(object):
def __init__(self):
self.value = 1
class B(object):
def __init__(self):
self.value = 2
def show(self):
print(self.value)
a = A()
B.__dict__['show'](a)
Ausführungsergebnis
1
In Python wurde gesagt, dass verschiedene Referenzen durch `` `dict``` gemacht werden können.
Wenn Sie dies jedoch zu oft verwenden, wird es zu schwarzer Magie. Verwenden Sie es daher nicht mehr normal.
Recommended Posts