文章目录
一、一切源自于一句话:python中一切皆为对象。让我们先定义一个类,然后逐步分析
二、什么是元类呢?
元类就是用来实例化产生的类的类
关系:元类 —实例化 ---->类 (类的类)
class People(object): # 因为每次定义类都要调用class,所以class一定在底层调用了元类
# school='Stanford'
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
print('%s says welcome to the Stanford to learn Python' %self.name)
如何得到对象
obj = 调用类()
obj = People('egon', 18)
# 查看内置的元类:我们是用class关键字定义的所有的类以及内置的类都是由内置的__元类type__实例化得到的。
# print(type(People)) # <class 'type'>
# print(type(int)) # <class 'type'>
三、class关键字创造类People的步骤
类有三大特征
1、类名
class_name = 'People'
2、类的基类
class_bases = (object,) # 默认为元组的形式
3、执行类体代码拿到类的名称空间
class_dic = {}
class_body = """
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
print('%s says welcome to the Stanford to learn Python' %self.name)
"""
exec(class_body,{},class_dic)
print(People.__dict__)
print(class_dic)
4、调用元类
People = type(class_name,class_bases,class_dic)
print(People) # <class '__main__.People'> # 相当于正常的print(People)
People = type(...) # 底层实现的
# 以上为class造类的底层4个步骤