2013-01-03 13 views
0

我注意到內置類和用戶定義類的成員函數有不同的類型。這是否意味着兩人在某些情況下可能會有不同的表現?Python3中內置和用戶定義方法的區別

class A: 
    def a(): 
    pass 

>>> type(A.a), type(list.append) 
(<class 'function'>, <class 'method_descriptor'>) 

回答

2

它們都正常執行它們的功能,如果這就是你的意思。它們都可以調用。否則它們之間幾乎沒有區別。

一個區別是,可以在function對象設置任意的屬性,而不是在一個C函數(如list.append)

另一個原因是,一個Python函數具有包含編譯的字節代碼與它相關聯的代碼對象,以及關於局部變量等的信息,C函數當然缺少這些信息

+0

那麼,我對C++的瞭解要多於Python,在C++中,不同的類型意味着不同的接口,而相關的類型意味着互換性。在Python中,無關的類型通常也可以互換,這有時會讓我對什麼是安全的以及什麼是不安全的噸。感謝您的回答! – ssegvic

相關問題