【python】python3 下的ORM元类窥探及实现 二

【二、元类初窥】

回顾上一篇的结论:

但就元类本身而言,它们其实是很简单的:

  1. 拦截类的创建
  2. 修改类
  3. 返回修改之后的类

我们这篇先来了解一下 使用 type来创建类:

"""
#元类创建类
# type("类名",(父亲,),{属性键,属性值})
"""
# 常规类

class A(object):
    num = 100


C = A
a = A()
print(a.num)
print(help(A)) # 打印 类A 的结构,看下类A里面是些什么
↓看一下结果↓

再来看下   使用 type 创建类:

# 元类创建类
# type("类名",(父亲,),{属性键,属性值})
B = type("B", (object,), {"num": 100})
b = B()
print(b.num)
print(help(B))

输 出值为>>>


两个小例子之后,是不是发现了些什么 ?

那我们再看看 静态方法 和类方法

class AA(object):
    num = 100

    def test(self):
        print("test")

    @staticmethod
    def static_method(self):
        print("static")

    @classmethod
    def class_method(cls):
        print("class ")
aa =AA()
aa.test()
print(aa.num)
print(help(AA))

再看一下 使用type 创建的

def test(self):
    print("test")


@classmethod
def class_method(cls):
    print("class")


@staticmethod
def static_medthod():
    print("static")


BB = type("BB", (object,), {"num": 100, "test": test, "static_medthod": static_medthod, "class_method": class_method})
bb = BB()
bb.test()
print(bb)
print(help(BB))

可以看一下结果,  AA  和BB 的结构还是一样的。

总结:知识点: 

"""
#元类创建类
# type("类名",(父亲,),{属性键,属性值})   # 默认返回的值名称跟类创建时的名称一致
"""

预告:下一篇,我们讲改造类(你会知道,你在python中是神一样的存在,你可以修改类,甚至组织类的创建(有兴趣的可以了解一下单例模式,我们可以控制 是否创建一个对象 修改 __new__ 方法)


欢迎留言交流。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值