我有点测试,以充分理解python中的元类。为什么元类有一个类型?
class Test(object):
pass
print Test.__class__
print Test.__class__.__class__
print Test.__class__.__class__.__class__
所有的结果都是一样的type
。但他们的每个地址都不相同
我无法真正理解为什么元类递归地具有元类。
请解释一下吗?
我有点测试,以充分理解python中的元类。为什么元类有一个类型?
class Test(object):
pass
print Test.__class__
print Test.__class__.__class__
print Test.__class__.__class__.__class__
所有的结果都是一样的type
。但他们的每个地址都不相同
我无法真正理解为什么元类递归地具有元类。
请解释一下吗?
其实,地址是相同的:
>>> id(Test.__class__)
6384576
>>> id(Test.__class__.__class__)
6384576
>>> id(Test.__class__.__class__.__class__)
6384576
一切都在Python的对象,每个对象必须有一个类(它应该属于某种类型)。可以通过__class__
属性访问类/型号,例如:
>>> (1).__class__
<type 'int'>
一切包括类本身,这是类/类型,称为type
的:
在同一时间type 'type'>
也是一个对象并应引用某些类/类型。但由于这是一种特殊的对象,它的属性__class__
提到自己:
>>> (1).__class__.__class__.__class__ is (1).__class__.__class__
True
当你做Test.__class__
,你会得到类型Test
,这是type
(因为Test
是一个类标识符)。
type
本身又是一个类标识符,这样你就可以调用__class__
(从object
继承)就可以了,你回来,它的类型是,再次,type
因为它是一个类标识符。
因为你总是会回来type
,这本身就是一个类,你可以无限次地做到这一点,并且总是会回到当前对象的类型为type
。
所有的类都是类,这意味着它们是从一个叫做类类派生...
所有python的类对象是通过内置的函数类型建立()。你也可以试试这个。
>>> T.__class__ == type
True
>>> type(type)
<type 'type'>
的T. 类等于内建功能型这也是一个对象实现的呼叫功能。这是一个属性将被解释为类(T)。由于你的T类没有基类,因此使用type()将返回类型对象。
你可以检查关于customizing class creation的python文档来获得关于类创建的详细信息。
为了确定适当的元类
谢谢,我误解其附加雷斯是不一样的。 –