zoukankan      html  css  js  c++  java
  • 类的共享属性

    #_*_ encoding: utf-8 _*_   @author: ty  hery   2019/9/6
    # 共享属性:创建实例时把所有实例的__dict__指向同一个字典,这样它们具有相同的属性和方法.
    class Borg(object):
        _state = {}
        def __new__(cls, *args, **kw):
            ob = super(Borg, cls).__new__(cls, *args, **kw)
            ob.__dict__ = cls._state
            return ob
    class MyClass2(Borg):
        a = 1
    b1 = MyClass2()
    b2 = MyClass2()
    b3 = MyClass2()
    b1.a='萨菲的'
    b2.a='萨菲02'
    b1.a='萨菲03'
    MyClass2.a = 333
    print(id(b1),id(b2),id(b3))
    print(b1.a,b2.a,b3.a)
    输出:
    42770952 42771008 42770616
    萨菲03 萨菲03 萨菲03
    167529720 167529720 167529720
    
    # 装饰器版本
    def singleton(cls, *args, **kw):
        instances = {}
        def getinstance():
            if cls not in instances:
                instances[cls] = cls(*args, **kw)
            return instances[cls]
        return getinstance
    
    @singleton
    class MyClass:
        a = 1
        
    b1 = MyClass()
    b2 = MyClass()
    b3 = MyClass()
    b1.a= 11
    b2.a= 12
    b3.a= 13
    
    print(id(b1),id(b2),id(b3))
    print(b1.a,b2.a,b3.a)
    输出:42516376 42516376 42516376
    13 13 13
    
    写入自己的博客中才能记得长久
  • 相关阅读:
    0918作业-----所有数值未做合法性检测
    尝试安装和配置JDK,并给出安装、配置JDK的步骤
    java为什么可以跨平台执行
    字符集
    java 入门及简介
    时间轴特效
    javascript简介
    javascript while循环
    Javascript for循环
    函数豹子问题
  • 原文地址:https://www.cnblogs.com/heris/p/14642346.html
Copyright © 2011-2022 走看看