• 内置方法 __new__ __del__


     

    1.__new__   构造方法

      实例化对象是先执行__new__方法,但是类中没有__new__方法,所以先到父类object类中的new方法,开辟一个属于对象的空间,然后再执行init方法

      设计模式:常用的有23种,这个概率是在Java中提出来得

      在Python中有俩种人

        一种是推崇设计模式,这种人基本都是由java开发转Python开发的人

        一种是贬低设计模式,这种人就是纯Python开发的人

      常用的一种:单例模式:一个类只有一个实例的时候

    # class Foo:
    #     __instance = None
    #     def __init__(self,name,age):                 # 初始化方法
    #         self.name = name
    #         self.age = age
    #         self.lst = [name]
    #     def __new__(cls, *args, **kwargs):  # 构造方法
    #         if cls.__instance is None:
    #             cls.__instance = object.__new__(cls)   
    #         return cls.__instance    #每次实例化的空间都是同一个空间
    #
    # obj1 = Foo('alex',20)
    # obj2 = Foo('egon',22)
    # print(obj1.lst,obj2.lst)    

    2.__init__    初始化方法

    3.__del__    析构方法:在删除这个类创建对象的时候,会先触发这个方法,再删除对象

            做一些清理工作,比如说关闭文件,关闭网络的链接,数据库的链接

      运用场景:在类中对文件进行抄做的时候,需要关闭文件所以会用到__del__

      触发机制:del

    4.__eq__  判断俩个实例对象是否一致

      触发机制:  ==

    class Staff:
        def __init__(self,name,sex):
            self.name = name
            self.sex = sex
        def __eq__(self, other):
            return self.__dict__ == other.__dict__
    alex = Staff("alex","")
    alex1 = Staff("alex","")
    print(alex == alex1)
    alex3 = Staff("lin","")
    print(alex == alex3)

    5.__hash__   hash()

      每重新执行hash值,hash都会发生变化,但是一次执行的过程中,同一个值对应的hash值是一样的,而字典的查找原理就是利用hash值在一次执行是一样的而快速找到的

      set的去重机制

        对每一个元素进行hash计算出一个内存地址

        到这个内存地址上查看,如果这块内存中没有值,就将这个元素存到对应的内存地址上

     如果这块内存中已经有值,判断这俩个值是否相等如果相等,就会放弃后面的值

     如果不相等,就会二次寻址再找一个新的空间来存储这个值

    6.__len__  触发机制,len(类名)

      应用场景:测量类中的某个列表的长度

    # class Foo:
    #     def __len__(self):
    #         return len(self.student)
    #     def __init__(self):
    #         self.name = "骑士计划"
    #         self.course = "python"
    #         self.student = []
    # s1 = Foo()
    # s1.student.append("wuyi")
    # s1.student.append("lin")
    # s1.student.append("wang")
    # print(len(s1))    #3  会执行列中的__len__方法
  • 相关阅读:
    SQL SERVER 2005添加用户和编辑sa
    数组型参数和数组的区别
    Oracle数据库建库、建表空间,建用户
    oracle表空间操作详解
    Oracle10g的完全卸载(转载)
    Delphi format的用法
    AnImateWindow用法
    文本文件操作
    TStringList的用法
    Delphi网络函数
  • 原文地址:https://www.cnblogs.com/yuncong/p/9580586.html
Copyright © 2020-2023  润新知