首页 python基础教程 Python面向对象-type元类查找和子类创建
pay pay

Python面向对象-type元类查找和子类创建

日期: 2021年12月4日 03:29
栏目: python基础教程
阅读: 106
作者: python自学网

摘要: Python是一门全对象语言,我们知道对象的实例化需要有类的存在,既然是全对象,所以类本身也是对象,那么他们的实例化是从哪个类而来的呢?这里就需要python本身有个最底层的基类,也就是是本文要讲解的元类(type)来帮我们解决这个问题了,下面我们来详细演示一下type元类的对到和使用。

Python是一门全对象语言,我们知道对象的实例化需要有类的存在,既然是全对象,所以类本身也是对象,那么他们的实例化是从哪个类而来的呢?这里就需要python本身有个最底层的基类,也就是是本文要讲解的元类(type)来帮我们解决这个问题了,下面我们来详细演示一下type元类的查找和使用。

一、元类的查找

num = 10
name = 'xxx'
list1 = [1, 2, 3]
class Cat:
    pass
c = Cat()

上面是四种不同的数据类型,也是对象。下面通过__class__来查找这四种数据类型的元类。

print(num.__class__.__class__)
print(name.__class__.__class__)
print(list1.__class__.__class__)
print(c.__class__.__class__)

返回结果:

<class 'type'>
<class 'type'>
<class 'type'>
<class 'type'>

 从上面的结果可以看出来返回的结果都是type类,这也就是所有数据类型和类的最底层基类——元类。

二、使用元类创建子类

既然type是元类,那么使用他一定能创建子类了,同时也能实例化出对象,下面我们来演示一下。

def run(self):
    pass
aa = type('Cat', (), {'name': 'jerry', 'run': run})
# 'Cat'是类名;()元祖中是父类; {'name': 'jerry', 'run': run}是存储属性和方法的字典,使用__dict__访问
# 实例化一个对象
d = aa()
print(d.__dict__)
print(d.run())

 

目录
回顶部