zoukankan      html  css  js  c++  java
  • python反射,单例模式

    # getattr
    # hasattr
    # setattr
    # delattr

    class Foo:
        def __init__(self, name,age):
            self.name = name
            self.age = age
        def show(self):
            return  "%s-%s " %(self.name,self.age)
        def __int__(self):
            return 123
        def __str__(self):
            return 'uuu'
    obj = Foo('pis', 18)
    
    r = int(obj) # r = 123
    u = str(obj)


    # 通过字符串的形式操作对象中的成员

    # func = getattr(obj, 'show')
    # print(func)
    # r = func()
    # print(r)

    # print(hasattr(obj, 'name'))

    # setattr(obj, 'k1', 'v1')
    # print(obj.k1)

    # delattr(obj, 'name')
    # obj.name

    引入单例模式

    class Foo:
        def __init__(self, name,age):
            self.name = name
            self.age = age
    
        def show(self):
            print(self.name,self.age)
    
    v = None
    
    while True:
        if v:
            v.show()
        else:
            v = Foo('pis', 123)
            v.show()

    使用:

    class Foo:
    
        __v = None
    
        @classmethod
        def get_instance(cls):
            if cls.__v:
                return cls.__v
            else:
                cls.__v = Foo()
                return cls.__v
    
    obj1 = Foo.get_instance()
    print(obj1)
    obj2 = Foo.get_instance()
    print(obj2)
    obj3 = Foo.get_instance()
    print(obj3)
  • 相关阅读:
    web网络编程
    C++ 多线程*****(看书补充)
    C++信号处理
    预指令
    C++模板*******
    C++ 命名空间
    动态存储
    异常处理**********
    私钥、秘钥详解
    Pod控制器应用进阶
  • 原文地址:https://www.cnblogs.com/MY0213/p/7825882.html
Copyright © 2011-2022 走看看