码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-09-05 20:11:22      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:整理   code   metaclass   base   class   war   new   int   pre   

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

元类中

_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(元类补充及单例模式(待补充))

标签:整理   code   metaclass   base   class   war   new   int   pre   

原文地址:https://www.cnblogs.com/michealjy/p/11469311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!