2015-10-13 50 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这样的东西。