2015-10-13 44 views
2

我讀到:「元類是類的類,就像類定義類的實例是如何工作的,元類定義了類的行爲方式,類是元類的實例。Java中的python ==接口中的元類?

我想知道它與Java中的interface有什麼不同。 interface也提供了一個藍圖爲類遵循。

+1

不,它不是。你可能想閱讀這個http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python。 – adarsh

+0

我剛纔讀到了,感到困惑。我希望看到'metaclass'與'interface'有什麼不同。它們都定義了所有繼承它們的類必須遵循的規則,對吧? –

+0

在基本級別上,metaclass類似於java中的Class類...但是,Java!= Python ......所以你不能指望它們完全相同...... – Codebender

回答

1

關於Python中的元類:
元類Python中這是用來創建類的類。你在Python中創建的類只是它的元類的一個實例。 type是Python中最超級的元類。

在Python中,一個類被建模爲一個對象,通過將對象的所有屬性附加到類中,它爲您提供了很大的使用靈活性。例如,您甚至可以動態創建類定義,就像創建類的實例一樣。
This is a good read.

關於接口在Java中:
首先,一個interface不是一個class。它只是另一個type(Java中的接口和類都是類型)。類和接口的確在Java中密切相關(接口是類的藍圖)。但它們是完全不同的類型。 java中的接口只是一種實現抽象的機制。

結論:在Python中,你真的沒有像java interface這樣的東西。