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)
    
    
    
  • 相关阅读:
    通俗版说委托
    C#读取配置文件的几种方式
    C#异步了解一下
    C#3DES加密了解一下
    说说泛型
    工厂和抽象工厂
    装饰者模式(Decorator pattern)
    观察者模式(Observer pattern)
    策略模式(Stategy Pattern)
    C#读取Appconfig中自定义的节点
  • 原文地址:https://www.cnblogs.com/albert0823/p/11180870.html
Copyright © 2011-2022 走看看