######   __del__ 魔术方法(析构方法)
'''
触发时机:当对象被内存回收的时候自动触发
[1.页面执行完毕回收所有变量 2.所有对象被del的时候]
功能:对象使用完毕后资源回收
参数:一个self接受对象
返回值:无
'''
1.页面执行完毕回收所有变量,触发析构方法
class Langgou():food = "吃肉"def __init__(self,name):self.name = namedef __del__(self):print("析构方法被触发")
obj = Langgou("刀疤")
print(obj.name)2.所有对象被del的时候,触发析构方法
del obj
del other_obj### 模拟文件操作
import os
class Read():def __new__(cls,name):if os.path.exists(name):return object.__new__(cls)else:return print("该文件不存在")def __init__(self,name):self.fp = open(name,mode="r",encoding="utf-8")def readcontent(self):content = self.fp.read()return contentdef __del__(self):self.fp.close()obj = Read("wangzhen.txt")
obj.readcontent()<------------------------------------------------------------------>
#####  __str__ 魔术方法
'''触发时机: 使用print(对象)或者str(对象)的时候触发功能:     查看对象参数:     一个self接受当前对象返回值:   必须返回字符串类型
'''
class Cat():gift = "九条命"def __init__(self,name):self.name = namedef __str__(self):return self.cat()def cat(self):return "{}小猫有故事{}".format(self.name,self.gift)tom = Cat("汤姆")
# 打印对象的时候触发
print(tom)# 用str强转的时候触发
res = str(tom)
print(res)<------------------------------------------------------------------------>
####   __repr__ 魔术方法
'''触发时机: 使用repr(对象)的时候触发功能:     查看对象,与魔术方法__str__相似参数:     一个self接受当前对象返回值:   必须返回字符串类型
'''
class Mouse():gift = "打洞"def __init__(self,name):self.name = namedef __repr__(self):return self.mouse()def mouse(self):return "{}老鼠有故事{}".format(self.name,self.gift)obj = Mouse("杰瑞")
# 被强转的时候触发
print(repr(obj))<------------------------------------------------------------------>
####  __call__ 魔术方法
'''触发时机:把对象当作函数调用的时候自动触发功能: 模拟函数化操作参数: 参数不固定,至少一个self参数返回值: 看需求
'''
# (1)基本用法
class Mouse():def __call__(self):print("王振")obj = Mouse()
obj()
对象当函数调用可以用call方法实现模拟系统内置方法(重点)<----------------------------------------------------------------------------->
####   __bool__ 魔术方法
'''触发时机:使用bool(对象)的时候自动触发功能:强转对象参数:一个self接受当前对象返回值:必须是布尔类型
'''
class Mouse():def __bool__(self):return Falseobj = Mouse()
res = bool(obj)
print(res)类似的还有如下等等(了解):__complex__(self)      被complex强转对象时调用__int__(self)          被int强转对象时调用__float__(self)        被float强转对象时调用<------------------------------------------------------------------>
###   __add__ 魔术方法  (与之相关的__radd__ 反向加法)
'''触发时机:使用对象进行运算相加的时候自动触发功能:对象运算参数:二个对象参数返回值:运算后的值
'''
class Mouse():def __init__(self,num):self.num = num# 对象在加号左侧,自动触发def __add__(self,other):return self.num + othera = Mouse(7)
res = a + 7
print(res)两个对象相加的时候,会两次触发add方法第一次是add,第二次是radd'''
类似的还有如下等等(了解):__sub__(self, other)           定义减法的行为:-__mul__(self, other)           定义乘法的行为:__truediv__(self, other)       定义真除法的行为:/'''<---------------------------------------------------------------------->
####   __len__ 魔术方法
'''触发时机:使用len(对象)的时候自动触发 功能:用于检测对象中或者类中某个内容的个数参数:一个self接受当前对象返回值:必须返回整型
'''
class Myclass():pty = 1pty2 = 2def __len__(self):lst = [i for i in MyClass.__dict__ if not(  i.startswith("__") and i.endswith("__")  )]return len(lst)obj = Myclass()
print(len(obj))'''
类似的还有如下等等(了解):__iter__(self)                 定义迭代容器中的元素的行为__reversed__(self)             定义当被 reversed() 调用时的行为__contains__(self, item)       定义当使用成员测试运算符(in 或 not in)时的行为......
''' <-------------------------------------------------------------------->
#### 魔术属性# __dict__ 获取对象或类的内部成员结构
print(obj.__dict__)
print(Children.__dict__)# __doc__  获取对象或类的内部文档
print(obj.__doc__)
print(Children.__doc__)# __name__  获取类名函数名
def earth_boom(self,func):print(func.__name__ , type(  func.__name__  ))# __class__ 获取当前对象所属的类
print(obj.__class__)# __bases__ 获取一个类直接继承的所有父类,返回元组
print(Children.__bases__) 

王振2020-5-29笔记相关推荐

  1. 【不忘初心】Win10_20H2_2009_19042.572_X64_六合一_[纯净精简版](2020.10.29)

    母版来自MSDN  WIN10_20H2.19042.508,集成补到19041.572,20H2相比1909 2004版本要稳定很多,精简起来也比较顺手,相对来说体积比之前的要小一些,精简方法基本上 ...

  2. 2020.10.29腾讯QQ音乐社招前端电话一面总结

    2020.10.29腾讯QQ音乐社招前端电话一面总结 面试官晚上19:16打过来的,聊了44分钟,到八点准时结束.无论过没过,都记录一下面试过程吧,是问了几个大问题,在几个大问题的基础上根据你的回答, ...

  3. 时间格式转换 Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间)

    留个记录,回头直接拿着用 // Mon Aug 17 2020 16:29:29 GMT+0800 (中国标准时间) 转 年月日时分秒 function timeD(time) {     let d ...

  4. 第三轮测试卷一(2020.10.29)

    第三轮测试卷一(2020.10.29) 铺石板,输入n x m的广场,和a x a的石板,求最少需要多少石板? /* 算法思想:没啥.... 理解向上取整就行 */num=((n+a-1)/a)*(( ...

  5. 李宏毅2020机器学习课程笔记(二)

    相关专题: 李宏毅2020机器学习资料汇总 李宏毅2020机器学习课程笔记(一) 文章目录 4. CNN Convolutional Neural Network(P17) 5. GNN Graph ...

  6. 前仿真和后仿真的区别,按键消抖设计思想、PLL使用、ODDR2的原语使用 --2020/10/29工作总结

    2020/10/29工作总结 前仿真和后仿真的区别 前仿真 综合后仿真 后仿真 synthesize和implement.generate bitstream 参考链接 按键消抖设计思想 PLL使用 ...

  7. [软件工程]软件生存周期过程与管理————(2020.6.29学习笔记)

    目录 第一节 软件生存周期过程概述 第二节 过程描述 第三节 应用说明 第四节 软件生存周期模型 第五节 过程规划与管理 第一节 软件生存周期过程概述 软件生存周期(SDLC,软件生命周期) 是软件的 ...

  8. 汤家凤高等数学2020年强化笔记-第三模块-积分学

    汤家凤老师2020年高数强化课程手写笔记.第三模块-积分学. 文章目录 第一部分 不定积分 第二部分 定积分 第三部分 二重积分 第四部分 三重积分 第五部分 曲线积分 第六部分 曲面积分 第一部分 ...

  9. 尚硅谷JavaWeb_2020idea_王振国_学习笔记

    文章目录 基本操作 阶段一.使用JS正则表达式检查输入 阶段二.实现登陆和注册功能 阶段三.做一些优化 阶段四.使用EL**表达式修改表单回显** 阶段五.图书模块 阶段五.下.分页的实现 阶段六.登 ...

  10. CSP-S 2020考前冲刺笔记

    文章目录 停课前 2020.10.14 2020.10.15 2020.10.16 2020.10.17 2020.10.18 停课后 2020.10.19 2020.10.20 2020.10.21 ...

最新文章

  1. KinectFusion基于深度的实时稠密三维重建TSDF开山之作
  2. Unix/Linux环境C编程入门教程(39) shell命令之系统管理
  3. 自定event事件之手动触发(一)
  4. linux文字模式怎么传文件夹,虚拟机VMWare文本模式Linux 与 Windows 文件互传
  5. python代码自动补齐插件
  6. 计算机微课应用报告书,【计算机专业论文】计算机专业教学中微课的应用(共4253字)...
  7. inline-block是html5,详解CSS display:inline-block的应用
  8. C# 单例模式(转)
  9. 【图像配准】基于matlab GUI互相关图像配准【含Matlab源码 853期】
  10. 在CNDS博客中插入Latex公式
  11. python编写程序掷骰子游戏_python学习之掷骰子游戏
  12. Matlab 画图控制速度,matlab常用画图操作
  13. 分块矩阵在计算机有哪些应用,分块矩阵及其应用
  14. 计算机在中医学有哪些最新应用,计算机与中医学的现代应用
  15. 关于Win10。。。我是来吃螃蟹的。。。
  16. 联想微型计算机供电电源线,拆修一只联想电源适配器,告诉你一个不为人知的秘密...
  17. ISR:中断服务程序(interrupt service routine)
  18. 给某汉化联盟讲些历史故事
  19. [iOS]-单例模式\通知\代理
  20. 计算机点击右键出现错误,电脑win10,点右键就会出现这个!怎么处理!

热门文章

  1. Python画柱形图之seaborn
  2. jquery分页插件jpages参数说明-jpages使用笔记
  3. Springboot毕设项目《音悦唯尔》在线音乐播放网站129rq(java+VUE+Mybatis+Maven+Mysql)
  4. 微信红包雨怎么抢_除夕微信“红包雨”要来!怎么抢看这里!
  5. Cocos2d-x 3.x 图形学渲染系列七
  6. 日记账GL追溯到AR模块
  7. 图片无损放大软件Topaz Gigapixel AI 5.5.2 win mac 汉化 mac只有英文版
  8. WEB网页设计中的DIV+CSS入门(转自:中国站长在线网)
  9. 全景航拍需要的注意事项
  10. 如何做一名合格的研究生?