簡體   English   中英

確定是否可以從類或實例中調用callable

[英]Determine if callable can be called from class or instance

如何確定某個方法或函數或任何可調用對象可以原樣調用或綁定到實例?

檢查並不涵蓋所有情況。 即這綁定到實例或類:

PY>inspect.ismethod(object.__subclasshook__)
False
PY>inspect.isfunction(object.__subclasshook__)
False

除了查閱文檔外,沒有其他方法可以告訴您。 沒有任何編程方式可以推斷出作者的功能意圖 只要傳遞必需的參數,就可以始終從類“直接”調用函數,請考慮:

In [1]: class Foo:
   ...:     def speak(self):
   ...:         print('hello')
   ...:

In [2]: Foo().speak()
hello

In [3]: Foo.speak(None)
hello

但顯然,作者的意思是speak要成為實例方法。

我想您可以排除零參數的函數可從實例調用的情況,但是對於類中的函數,這將是高度不規則的情況(除非它實際上是staticmethod對象)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM