二十一.面向对象 元类type

一. 元类(metaclass)

在python中一切皆对象,那么我们用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类,即元类可以简称为类的类


https://www.cnblogs.com/nickchen121/p/10992975.html 详细.........

https://www.cnblogs.com/linhaifeng/articles/8029564.html 详细.......


class Foo(object):
    ...
aa=Foo()
print(type(aa))  # <class '__main__.Foo'>
print(type(Foo))  # <class 'type'>

print("***********************************************************")

Per=type('Per',(object,),{"x":1})
print(Per.__dict__)
print(Per.x)


print("***********************************************************")

# type 实例化   就是类的类     type 元类
def __init__(self,name,age):
    self.name=name
    self.age=age
def aa(self):
    print("这是类的类 元类type创建的哈哈哈哈哈哈")
    print(self.name)

Per=type('Per',(object,),{'x':1,' __init__':__init__,'aa':aa})
print(Per)
print(Per.__dict__)
# a1=Per("张三",55)
print(Per.x)
#
# f1=Per("展示柜",55)
# print(f1.name)

 

创建类的3个要素:类名,基类,类的名称空间

People = type(类名,基类,类的名称空间)

class_name = 'People'  # 类名

class_bases = (object, )  # 基类

# 类的名称空间
class_dic = {}

class_body = """
country='China'
def __init__(self,name,age):
    self.name=name
    self.age=age
def eat(self):
    print('%s is eating' %self.name)
"""

exec(
    class_body,
    {},
    class_dic,
)

 

posted @ 2019-06-26 17:17  supreme9999  阅读(137)  评论(0编辑  收藏  举报