• 设计模式


    设计模式一共有23种

    单例模式 一个类始终只有一个实例

    原则是 有着覆盖,没有的属性就添加或者是保留下去

    当你第一次实例化这个类的时候就创建一个实例化对象

    当你之后再来实例化的时候就会用原来的创建的对象,如果后面你有定制了一个那么就会覆盖 之间没有属性就添加进去

    class A:
        __instance = False
        def __init__(self,name,age):
            self.name = name
            self.age = age
            def __new__(cls, *args, **kwargs):
                if cls.__instance:
                    return cls.__instance
                cls.__instance = object.__new__(cls)
                return cls.__instance
    a = A('gao',23)
    a.sex = ''
    b = A('JIAN',22)
    b.hobby = '打飞机'
    print(b.__dict__)
    print(a.__dict__)

    __eq__

    class A:
        def __init__(self,name):
            self.name = name
        def __eq__(self, other):
            if self.name == other.name:
                return True
            else:
                return True   #通过人为的改变返回值  可以让控制==的返回值
    a = A('gao')
    b = A('jian')
    print(a is b)

    __hash__  set去重依赖于__hash__ __eq__ 方法

    class A:  #hash可以定制的好处是人为控制hash值是否相等,比如名字和性别相等就相当于一个人,去重功能 但是hash 里面的只能为字符串
        def __init__(self,name,sex,ago):
            self.name = name
            self.sex = sex
            self.ago = ago
        def __hash__(self):
            return hash(self.name+self.sex)
        def __eq__(self, other):
            if self.name == other.name and self.sex == other.sex:
                return True
    p_lst = []
    for i in range(84):
        p_lst.append(A('egon','male',i))
    print(p_lst)
    print(set(p_lst))
  • 相关阅读:
    PHP is_float()、 is_double()、is_real()函数
    自动驾驶关键技术分解和流程
    自动驾驶行业内时间表和技术解析
    自动驾驶架构与实现路径
    ADAS单目摄像头行驶区域环境光检测图片标注
    多目标检测整合算法
    道路场景语义分割算法
    TTC测距算法
    TSR交通标志检测与识别
    Mobileye_EyeQ4功能和性能
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8336541.html
Copyright © 2020-2023  润新知