Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40837
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 78
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-22 15:02
文章分类

全部博文(5)

文章存档

2016年(3)

2014年(2)

我的朋友

分类: Python/Ruby

2016-03-25 10:59:31

class singleton(type):
    def __new__(cls, name, bases, dict):
        old_init = dict.get('__init__')
        old_new = super(cls.__class__, cls).__new__
        def _wrap_init(self, *args, **kwargs):
            if hasattr(self.__class__,'_onlyou_'):
                return
            setattr(self.__class__,'_onlyou_', self)
            old_init(self,*args,**kwargs)
        def _wrap_new(cls, *args, **kwargs):
            if hasattr(cls,'_onlyou_'):
                return getattr(cls, '_onlyou_')
            return old_new(cls, *args, **kwargs)
        dict['__init__'] = _wrap_init
        dict['__new__'] = _wrap_new
        return type.__new__(cls, name, bases, dict)




class A(object):
    __metaclass__ = singleton
    def __init__(self, a,b):
        self.a=a
        self.b=b


a=A(1,2) #first
b=A()
c=A(1,2,3,4,5)


id(a) == id(b) == id(c)

阅读(1776) | 评论(0) | 转发(0) |
0

上一篇:程序随想

下一篇:没有了

给主人留下些什么吧!~~