在PHP中,我可以做這樣的事情:Python的等價物__call()魔法?
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"
這將是很方便的能夠在Python的一個項目我正在做的(很多討厭的XML的解析,它會是很高興把它變成對象,並能夠只是調用方法。
確實Python中有相當的?
很不錯,儘管定義嵌套函數爲'function(* args)'也是有用的,這樣主體可以使用函數名和任何傳遞的參數。取決於Keith想要的方法。 (當然,如果不會有任何方法的參數,'__getattr__'本身可以返回結果,從而模擬字段而不是方法。) – 2010-09-03 18:16:33
我確實希望能夠獲得函數參數爲好。定義def函數()是唯一必要的改變:def函數(* args):?或者我還需要做其他事嗎? (Python新手,對不起!) – 2010-09-03 18:36:52
@Keith:如果該函數採用任意參數,則將'* args'放入參數列表中,它將接收包含所有參數的元組。如果它是一個固定數量的參數,那麼你可以繼續直接定義'function(a,b)',例如,獲取兩個參數。 – Juliano 2010-09-03 20:09:34