python中的meta初探

本文探讨了Python中的元类,包括type、object、class和instance之间的关系,特别是__call__在类和元类中的作用。元类可用于实现单例模式,并在Django数据库操作中起到关键作用,允许在创建类或实例时执行额外操作,如定义表字段和提供统一的数据操作接口。此外,还讨论了元类在缓存实例、ABCMeta和函数重载等场景的应用。
摘要由CSDN通过智能技术生成

Table of Contents

About Meta

To see a bit more about inner of python

type & object & class & instance

在这里插入图片描述

https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python

在这里插入图片描述

https://www.zhihu.com/question/38791962

instance’s class
print('"hello world".__class__:', 'hello world'.__class__)
"hello world".__class__: <class 'str'>
class’s class and parents
print('str.__class__:', str.__class__)
print('str.__bases__:', str.__bases__)
str.__class__: <class 'type'>
str.__bases__: (<class 'object'>,)
type’s parent
type.__bases__
(object,)

__call__'s role in class and type

class SimpleMeta(type):
    def __call__(self, *args, **kwargs):
        print("callable object called()")
        return super().__call__(*args, **kwargs)
    def __new__(cls, clsname, bases, clsdict):
        print('SimpleMeta.__new__')
        return super().__new__(cls, clsname, bases, clsdict)
class Spam(object, metaclass=SimpleMeta):
    def __init__(self):
        pass
    def __new__(cls, *args, **kwargs):
        print('Spma __new__')
        return super()</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值