通过 type 可以查看对象的类型,也就是查看对象是那一类的,这里可以看出来 12 是 int 类型的也就是整数类。由于一切皆对象,那么我们也可以查看 int 是属于哪一个类型的。
通过这样的操作可以看出来 int 是 type 类型的,也就是说 int 类是 type 类实例化得到的对象。按照这样的思路在来看看 type 类是什么类型。
从上面可以看出来 type 是 type 类型的对象例2:在来看这样一个规律
由上可以看出,实例 f 是 Foo 类的对象,Foo 这个自定义的类它是 type 类型的,并且 type 也是 type 类型的。总结:
虽然没有给 bases 赋值,但是 Python 中所有的类都是以 object 为基类,所以查看类 Foo1 的父类,会得到这样一个结果。PS:__bases__查看父类。也可以将 Foo1 实例化,就能看见 f 是 Foo1 类型,并且仿照之前的样子查找它的类型,可以一直查找到元类 type。
__class__ 是类的一个内置属性,表示类的类型,也是类的实例的属性,表示实例对象的类实例2:利用元类 type 所创建的类 Bar 继承了 Foo1 和 Book 两个类
上述中 Bar 类除了在创建时设置的 name 外,还有从 Book 类继承来的 website,实例化后也可以读取到 name 和 website 两个属性的值,并且实例的类型是 Bar。三、Metaclass
类 Meta 继承了 type ,也可以称为元类,而 Spam 类与之前定义的类的不同之处就在于,类名后括号内添加了参数 metaclass 来说明或指定元类,这样就利用了元类 Meta 创建了类 Spam。总结描述:
从上面程序运行的的结果可以直接看出当该段程序运行的时候,虽然并没有直接实例化 Spam 类,但是由于指定了 Meta 为 Spam 类的元类 ,所以 Meta 会直接实例化 Spam 类,并且元类 Meta 的构造方法 __new__() 中定义的属性 author 已经成为了实例 Spam 类的类属性。那么接下来将 Spam 实例化后,也就能得到想要的结果。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |