classOldboyTeacher(object):
school ='oldboy'def__init__(self, name, age):
self.name = name
self.age = age
defsay(self):print('%s says welcome to the oldboy to learn Python'% self.name)
obj = OldboyTeacher('egon',18)# 调用OldboyTeacher类=》对象obj# 调用元类=》OldboyTeacher类# print(type(obj))print(type(OldboyTeacher))
结论:默认的元类是type,默认情况下我们用class关键字定义的类都是由type产生的
二:class关键字底层的做了哪些事
1、先拿到一个类名
class_name ="OldboyTeacher"
2、然后拿到类的父类
class_bases =(object,)
3、再运行类体代码,将产生的名字放到名称空间中
class_dic ={}
class_body ="""
school = 'oldboy'
def __init__(self, name, age):
self.name = name
self.age = age
def say(self):
print('%s says welcome to the oldboy to learn Python' % self.name)
"""exec(class_body,{},class_dic)# print(class_dic)
classMymeta(type):# 只有继承了type类的类才是自定义的元类passclassOldboyTeacher(object, metaclass=Mymeta):
school ='oldboy'def__init__(self, name, age):
self.name = name
self.age = age
defsay(self):print('%s says welcome to the oldboy to learn Python'% self.name)
一切源自于一句话:python中一切皆为对象一:元类介绍元类=》OldboyTeacher类=》objclass OldboyTeacher(object): school = 'oldboy' def __init__(self, name, age): self.name = name self.age = age def say(self): print('%s says welcome to the oldboy to