网站制作学习网Python→正文:python 自定义元类
字体:

python 自定义元类

Python 2024/7/5 21:41:38  点击:不统计

原载于:转www.载for网站制作学习asp必.cn究
定义元类 继承type 类。 重写两个方法,并且参数固定。
    def __new__(cls, name, bases, dct):
    def __init__(cls, name, bases, dct):


class MyMeta(type):

    registry = {}  # 记录所有的 对象
 
    def __new__(cls, name, bases, dct):  # 重写  新建里方法
        print(f"Creating class {name}")
        new_class = super().__new__(cls, name, bases, dct)
        cls.registry[name] = new_class
        return super().__new__(cls, name, bases, dct)
 
    def __init__(cls, name, bases, dct):  # 重新init
        print(f"Initializing class {name}")
        super().__init__(name, bases, dct)
 
    @classmethod
    def all_obj(cls):
        return cls.registry
 
 
class MyClass(metaclass=MyMeta):
    pass
 
 
a = MyClass()
print(a)
print(MyMeta.all_obj())
# 输出结果:
# Creating class MyClass
# Initializing class MyClass
# <__main__.MyClass object at 0x10d103730 >
# {'MyClass': <class '__main__.MyClass'>}

原载于:本文原载于www.forasp.cn

·上一篇:python 代码分析优化工具有哪些 >>    ·下一篇:python 中的队列 >>
推荐文章
最新文章