python__基础 : 类的__init__,__str__,__del__方法
__init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化.
所以如果对象有属性,一般会直接写在__init__方法里面:
class Test:def __init__(self, a, b):self.a = aself.b = btest = Test(a, b)
__str__:当实例化一个类之后,就有了一个对象的引用,如 test = Test() 这个时候如果直接print(test),输出的是这个对象所属于的类以及在内存中存储的位置,如果想输出别的信息,可以重定义__str__方法:
class Test:def __str__(self):return '这是一个测试类'test = Test()print(test)>>>这是一个测试类
__del__:在一个对象的引用计数成为0后,会自动调用__del__方法来进行一些......善后操作.....
如创建一个对象 test = Test(),这个时候test变量所指向的对象的引用计数为1,
如果手动用del 删除test这个变量,或者程序运行结束系统自动删除它以释放内存空间,
那么对象的引用计数会变为0,同时在删除前调用__del__方法.
class Test:def __del__(self):print('已经调用__del__方法...')test = Test()del testprint('--------程序结束--------')>>>已经调用__del__方法...--------程序结束--------
需要注意的是,如果引用计数不为0,也就是如果还有变量指向这个对象,更进一步如果这个对象所在的内存没有被回收,那么是不会调用__del方法的.
如:接上面代码,若实例化一个对象: test = Test(), 下一步 test2 = test,这个时候对象的引用计数就变成了2,如果单单删除test: del test ,是不会调用__del__方法的,
必须要把 test2 也删除 : del test2 , 这个时候才会调用__del__方法.
转载于:https://www.cnblogs.com/cccy0/p/9038672.html
python__基础 : 类的__init__,__str__,__del__方法相关推荐
- Python中__init__和__del__方法介绍
2019独角兽企业重金招聘Python工程师标准>>> __init__方法,在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开 ...
- Python基础:面向对象基础 (一) 类及其属性和魔法方法
定义类,添加和获取对象属性 # 定义类 格式如下 # class 类名: # 方法列表# 新式类定义形式 # info 是一个实例方法,第一个参数一般是self,表示实例对象本身 class Hero ...
- Python __del__()方法:销毁对象
Python 通过调用 __init__() 方法构造当前类的实例化对象__del__() 方法,功能正好和 init() 相反,其用来销毁实例化对象. 编写程序时,如果之前创建的类实例化对象后续不再 ...
- Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法
一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...
- python 元类的call_python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法...
python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法 一, 内置函数补充 1,isinstance(obj,cls)检查 ...
- Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信
Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...
- Python 中的特殊方法(定制类):__str__、__cmp__、__len__、数学运算、类型转换、@property运用、__slots__和__call__函数
Python中的特殊方法 Python的特殊方法定义在 class中,不需要直接进行显示调用,Python的某些操作符或者函数会自动调用对应的特殊方法.这些方法如:__str__().__len__( ...
- 第8.18节 Python类中内置析构方法__del__
一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...
- py魔法方法(__new__/metaclass元类、__init__、__getattr__、__callable__等)
""" py魔法方法.py (__new__/metaclass元类.__init__.__getattr__.__callable__等)使用:1.#使用__new__ ...
最新文章
- c语言cythe头文件,第5章 C语言序的基本结构.doc
- java super是引用变量吗_Java中super的几种用法并与this的区别
- php网页轮播图,JavaScript_JavaScript实现图片轮播的方法,本文实例讲述了JavaScript实现图 - phpStudy...
- 实验9:Problem D: 从点到面
- [Err] 1093 - You can't specify target table 'xxx' for update in FROM clause解决方法
- 泛型:了解泛型与通配符
- K8S_Google工作笔记0004---平台规划和部署方式介绍_搭建k8s集群准备
- 听说社保不能补缴了,像我们这种没缴社保的打工者,该怎么办?
- 为什么你的 JavaScript 代码如此冗长?!
- Gink掉过的坑(一):将CCTableView导入到lua中
- 在Windows 10 环境下安装 Hadoop-3.1.2
- JSON与对象之间的相互转换
- 2022年系统分析师论文模拟题--押题
- python函数算面积_面积函数python
- JAVA程序设计题——英雄对战游戏,定义一个描述战斗单位的英雄(Hero)类,此类必须包含以下成员变量:名称(name),生命值(life),技能1攻击力(damage1),防御力(defence)
- Matlab 绘制双纵轴图
- 数值优化理论的数学基础
- Linux系统命令与Shell编程
- SAP_FI_FI包含哪些部分
- ZOJ 3328	Wu Xing(游戏)