面向对象高级C(元类补充及单例模式(待补充))

Posted michealjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象高级C(元类补充及单例模式(待补充))相关的知识,希望对你有一定的参考价值。

有些地方还有一点模棱两可,先放在这,周六抽一个上午把这个整理完

元类中

_init_: 控制类的产生,在__new__之后

_call_: 控制对象的产生

_new_: 控制类产生最根上,其实本质最根上也不是它,是type的__call_,但是我们看不到了

object.__new__(Person) #生成Person类的对象 空的
type.__new__(cls, name, bases, dic) #生成cls这个类对象,里面有东西


#模板:控制对象的产生
class Mymeta(type):
    def __call__(self, *args, **kwargs):
        obj = object.__new__(self) #先new一个对象
        obj.__init__(*args, **kwargs) #在初始化对象
        return obj
class Person(metaclass=Mymeta):
    def __init__(self,name):
        self.name = name
    def __call__(self, *args, **kwargs):
        print('XXXX')
p = Person('lqz')

以上是关于面向对象高级C(元类补充及单例模式(待补充))的主要内容,如果未能解决你的问题,请参考以下文章

面向对象六大原则及单例模式

面向对象知识点续及单例模式

面向接口及单例工厂随笔

[C++ 面向对象高级编程]知识点补充1

c语言设计模式--补充面向对象基础

面向对象编程-总复习