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__方法

内置方法 __new__ __del__的更多相关文章

  1. Python进阶-XVIV 类的内置方法:__str__ 、__repr__、析构函数(__del__)、双下的call,eq,new,hash 以及item相关的三个方法

    类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类obj中有: 两个双下方法 obj.__str__ str(obj) obj.__repr__ repr(obj) ...

  2. 多态 鸭子类型 反射 内置方法(__str__,__del__) 异常处理

    ''' 1什么是多态 多态指的是同一种/类事物的不同形态 2 为何要有多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 多态性的好处: 1增加了程序的 ...

  3. Python中class内置方法__init__与__new__作用与区别探究

    背景 最近尝试了解Django中ORM实现的原理,发现其用到了metaclass(元类)这一技术,进一步又涉及到Python class中有两个特殊内置方法__init__与__new__,决定先尝试 ...

  4. Python 类的内置方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # p ...

  5. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...

  6. python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)

    面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...

  7. day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法

    反射 后边有关字符串的# class Management:# role = '管理员'# def __init__(self,name,sex,phone,mail):# self.name = n ...

  8. python面向对象 : 反射和内置方法

    一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类  (注:type(对象名) is 类名 : 判断对象所属 ...

  9. 铁乐学python_day24_面向对象进阶1_内置方法

    铁乐学python_day24_面向对象进阶1_内置方法 题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面 ...

随机推荐

  1. Hadoop文件操作常用命令

    1.创建目录 #hdfs dfs -mkidr /test 2.查询目录结构 #hdfs dfs -ls / 子命令 -R递归查看//查看具体的某个目录:例如#hdfs dfs -ls /test 3 ...

  2. JavaWeb项目根路径问题

    jsp中获取项目根路径: 方法① 最顶部增加代码: <% String path = request.getContextPath(); String basePath = request.ge ...

  3. 大话devops

    一.敏捷的局限性的促使devops诞生 敏捷的局限性:敏捷只注重开发阶段的敏捷,未涉及到整个产品生命周期流程其他环节导致采用敏捷开发流程后效果不明显. devops成为企业数字化转型的助推器,扮演基础 ...

  4. 测试提高路线图_tester+

    https://mp.weixin.qq.com/s/30ZT0w164Q3iLdPg4R8org

  5. Solution -「POJ 3710」Christmas Game

    \(\mathcal{Decription}\)   Link.   定义一棵圣诞树: 是仙人掌. 不存在两个同一环上的点,度数均 \(\ge 3\).   给出 \(n\) 棵互不相关的圣诞树,双人 ...

  6. Unable to register node “xxx“ with API server: Unauthorized

    k8s二进制部署环境出现kubelet认证不了节点 出现这个情况的时候,第一个反应是先看apiserver证书是不是过期了 # 查看apiserver的service文件存储路径 systemctl ...

  7. verification 验证环境配置传递

    验证环境配置传递 tc配置env 继承关系: tc_base->tc_base_bt->tc_xx base_env->xx_env base_env_cfg->xx_env_ ...

  8. pytest(11)-Allure生成测试报告(一)

    Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...

  9. 探秘inter()方法

    最近在阅读<深入理解Jav虚拟机>的运行时常量池章节,看到"java语言并不要求常量池一定只有编译器才能产生...运行期间也可以将新的常量放入常量池,这种特性被开发人员利用得比较 ...

  10. 思迈特软件Smartbi光鲜亮丽的背后是什么在支撑?

    思迈特软件Smartbi是国内知名BI厂商,自2011年成立以来就以提升和挖掘客户的价值为使命,致力于为客户提供一站式商业智能平台和BI解决方案,发展到如今已经获得了来自国家.地方政府.国内外权威分析 ...