Python考试题--第58道题干--元类(metaclass)的意义是什么--2022年04月13日

原创
小哥 3年前 (2022-10-29) 阅读数 8 #大杂烩

1.元类的定义:

类似于为类创建模板,所有类都是通过他创建的,您可以自由控制创建类的过程。

您可以创建单件图案,ORM模式

2.通过元类实现单例模式:

class Singleton(type):
    def __init__(self, *args, **kwargs):
        print(in __init__)
        self.__instance = None # 实现定义成员变量的单例模式。
        super(Singleton, self).__init__(*args, **kwargs)
    def __call__(self, *args, **kwargs):
        print(in __call__)
        if self.__instance is None: # 如果成员变量不为空,则会被截获,不会创建新实例,并且不会打印以下内容。
            self.__instance = super(Singleton,self).__call__(*args, **kwargs)
            print(type(self.__instance))
        return self.__instance

class Myclass(metaclass=Singleton):
    pass

mc1 = Myclass()
mc2 = Myclass()
print(mc1)
print(mc2)
print(mc1 == mc2)

执行结果如下:

mc1和mc2的ID都是一样的。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除