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

    反射&函数vs方法

    反射(通过字符串去操作一个对象)

    ## 反射类中属性和方法
    class A:
        name = 'laozi'
        def func(self):
            print(self.func)
    
    
    print(hasattr(A(),'func'),
    getattr(A(),'func'))
    hasattr(A(),'func')
    getattr(A,'func')
    obj = A()
    setattr(obj,'age',19)
    print(getattr(obj,'age'))
    反射多应用于用户输入导航条
    
    ## 反射当前模块的函数
    
    class Auth:
    
        def login(self):
            print('登录函数')
    
    
        def register(self):
            print('注册函数')
    
    
        def exit(self):
            print('退出...')
    
    obj = Auth()
    s = 'login'
    getattr(obj,s)()
    

    java的反射

    分辨函数和方法(区别在于隐式传参和显示传参)

    from types import FunctionType
    from types import MethodType
    
    def func():
        pass
    class A:
        def func1(self):
            pass
    a = A()
    print()
    print(isinstance(func,FunctionType)) ## True
    
    print(isinstance(A.func1,FunctionType)) # True
    print(isinstance(a.func1,FunctionType)) # false  传参的区别
    
    

    双下方法

    __new__ 构造方法 创造并返回一个新对象
    __init__ 空间赋值
    

    单例模式

    class A:
        __status = None
    
        def __new__(cls, *args, **kwargs):
            if not cls.__status:
                cls.__status = object.__new__(cls)
            return cls.__status
    
    
    a = A()
    a1 = A()
    print(a)
    print(a1)
    
    
    
  • 相关阅读:
    AC_9. 分组背包问题
    AC_8. 二维费用的背包问题
    AC_7混合背包问题
    AC_5. 多重背包问题 II
    AC_4. 多重背包问题 I
    AC_3. 完全背包问题
    小郡肝火锅点餐系统——测试部署发布
    Vue脚手架搭建
    归并排序-总结
    小郡肝火锅点餐系统——项目文档
  • 原文地址:https://www.cnblogs.com/albert0823/p/11180870.html
Copyright © 2011-2022 走看看