zoukankan      html  css  js  c++  java
  • 设计模式

    设计模式一共有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))
  • 相关阅读:
    Sql批处理语句
    使用waitfor 语句
    将文件分对话拆分
    集合
    用户登录系统
    fromkeys() keys() values() items()
    通讯录程序
    字符串分割方法split()函数
    装逼的本质就是把同一东西说成不同的事物
    字典
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8336541.html
Copyright © 2011-2022 走看看