我有一個庫,可以採取類功能或具有特定簽名的正常功能。一類通常是這樣的:如何在Python 3.x中檢測未綁定方法的用法?
class MyObject(object):
def __init__(self, request):
self.request = request
def run(self):
return 'OK'
和函數的格式是這樣的:
def my_func(request):
retrn 'OK'
的這種用法是:
add_runner(MyObject, attr='run')
add_runner(my_func)
但有時人利用這個錯誤並通過class功能到我的書架:
add_runner(MyObject.run)
我已經在Python 2.x中檢測到這是一個未綁定的方法,並提出錯誤提醒他們他們正在使用我的API錯誤,但在Python 3.x中我找不到任何方法來真正檢測到他們做錯了。我錯過了什麼?
是的,但我想檢測無效使用。所以如果'run'是一個實例方法(即通過'self'綁定到類的一個實例),那麼它是無效的,因爲我不想讓自己通過它 – sontek
如果'run'是一個實例方法,'inspect.ismethod(objectInstance.run)'會返回'True' – levis501