In PHP, ich kann etwas tun:Python-Äquivalent von PHPs __call() magische Methode?
class MyClass
{
function __call($name, $args)
{
print('you tried to call a the method named: ' . $name);
}
}
$Obj = new MyClass();
$Obj->nonexistant_method(); // prints "you tried to call a method named: nonexistant_method"
Dies würde nützlich sein, die Lage sein, für ein Projekt in Python zu tun, ich arbeite (viele bösen XML zu analysieren, würde es sein, schön, um es in Objekte zu drehen und in der Lage sein, nur Methoden aufrufen.
Does Python einen äquivalenten?
Ziemlich gut, obwohl es auch nützlich sein könnte, die verschachtelte Funktion als 'function (* args)' zu definieren, so dass der Body sowohl den Funktionsnamen als auch alle übergebenen Argumente verwenden kann. Hängt davon ab, was Keith mit den Methoden machen will. (Natürlich wird '__getattr__' selbst dann, wenn es keine Argumente für eine der Methoden geben wird, das Ergebnis zurückgeben und dabei Felder anstelle von Methoden simulieren.) –
Ich möchte tatsächlich die Funktionsargumente als erhalten Gut. Ist die einzige notwendige Änderung def def function(): als Def-Funktion (* args) :? Oder muss ich noch etwas anderes machen? (Python-Neuling, sorry!) –
@Keith: Wenn die Funktion willkürliche Argumente nimmt, dann setze '* args' in die Argumentliste und es wird ein Tupel mit allen Argumenten erhalten. Wenn es sich um eine feste Anzahl von Argumenten handelt, können Sie einfach direkt 'function (a, b) 'definieren, um beispielsweise zwei Argumente zu nehmen. – Juliano