Trong PHP, tôi có thể làm một cái gì đó như thế này:Python tương đương với PHP __call() phương pháp ma thuật?
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"
Đây sẽ là thuận tiện để có thể làm bằng Python cho một dự án tôi đang làm việc trên (nhiều XML khó chịu để phân tích, nó muốn được tốt đẹp để biến nó thành đối tượng và có thể chỉ cần gọi phương pháp này.
Liệu Python có một tương đương?
Khá tốt, mặc dù cũng có thể hữu ích khi xác định hàm lồng nhau là 'hàm (* args)' để thân thể có thể sử dụng cả tên hàm và đối số bất kỳ được truyền. Phụ thuộc vào những gì Keith muốn các phương pháp để làm. (Tất nhiên nếu không có bất kỳ đối số nào cho bất kỳ phương thức nào, '__getattr__' có thể trả lại kết quả, do đó mô phỏng các trường thay vì các phương thức.) –
Tôi thực sự muốn có được các đối số hàm như tốt. Là sự thay đổi cần thiết duy nhất để định nghĩa hàm def(): là hàm def (* args) :? Hay tôi cũng cần phải làm gì khác? (Python newbie, xin lỗi!) –
@Keith: Nếu hàm nhận các đối số tùy ý, sau đó đặt '* args' vào danh sách đối số và nó sẽ nhận được một bộ tuple với tất cả các đối số. Nếu nó là một số lượng các đối số cố định, thì bạn có thể tiếp tục và định nghĩa 'hàm (a, b)' trực tiếp, ví dụ, để lấy hai đối số. – Juliano