0
我注意到內置類和用戶定義類的成員函數有不同的類型。這是否意味着兩人在某些情況下可能會有不同的表現?Python3中內置和用戶定義方法的區別
class A:
def a():
pass
>>> type(A.a), type(list.append)
(<class 'function'>, <class 'method_descriptor'>)
我注意到內置類和用戶定義類的成員函數有不同的類型。這是否意味着兩人在某些情況下可能會有不同的表現?Python3中內置和用戶定義方法的區別
class A:
def a():
pass
>>> type(A.a), type(list.append)
(<class 'function'>, <class 'method_descriptor'>)
它們都正常執行它們的功能,如果這就是你的意思。它們都可以調用。否則它們之間幾乎沒有區別。
一個區別是,可以在function
對象設置任意的屬性,而不是在一個C函數(如list.append)
。
另一個原因是,一個Python函數具有包含編譯的字節代碼與它相關聯的代碼對象,以及關於局部變量等的信息,C函數當然缺少這些信息
那麼,我對C++的瞭解要多於Python,在C++中,不同的類型意味着不同的接口,而相關的類型意味着互換性。在Python中,無關的類型通常也可以互換,這有時會讓我對什麼是安全的以及什麼是不安全的噸。感謝您的回答! – ssegvic