Tôi đang chơi với Python có thể gọi. Về cơ bản bạn có thể định nghĩa một lớp python và thực hiện phương thức __call__
để làm cho cá thể của lớp này có thể gọi được. ví dụ:Không thể nhận được argspec cho Python callables?
class AwesomeFunction(object):
def __call__(self, a, b):
return a+b
Kiểm tra mô đun có hàm getargspec, cung cấp cho bạn đặc tả đối số của hàm. Tuy nhiên, có vẻ như tôi không thể sử dụng nó trên một đối tượng có thể được gọi:
fn = AwesomeFunction()
import inspect
inspect.getargspec(fn)
Thật không may, tôi nhận được một Lỗi Loại:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/inspect.py", line 803, in getargspec
raise TypeError('arg is not a Python function')
TypeError: arg is not a Python function
Tôi nghĩ nó khá đáng tiếc là bạn không thể đối xử với bất kỳ đối tượng có thể được gọi là hàm , trừ khi tôi đang làm điều gì sai ở đây?
Cảm ơn bạn đã nhắc nhở tôi về một trong những phương pháp kỳ diệu ít được sử dụng và hiểu, '__call__' –