__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__方法相关推荐

  1. Python中__init__和__del__方法介绍

    2019独角兽企业重金招聘Python工程师标准>>> __init__方法,在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开 ...

  2. Python基础:面向对象基础 (一) 类及其属性和魔法方法

    定义类,添加和获取对象属性 # 定义类 格式如下 # class 类名: # 方法列表# 新式类定义形式 # info 是一个实例方法,第一个参数一般是self,表示实例对象本身 class Hero ...

  3. Python __del__()方法:销毁对象

    Python 通过调用 __init__() 方法构造当前类的实例化对象__del__() 方法,功能正好和 init() 相反,其用来销毁实例化对象. 编写程序时,如果之前创建的类实例化对象后续不再 ...

  4. Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法

    一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...

  5. python 元类的call_python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法...

    python3 全栈开发 - 内置函数补充, 反射, 元类,__str__,__del__,exec,type,__call__方法 一, 内置函数补充 1,isinstance(obj,cls)检查 ...

  6. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  7. Python 中的特殊方法(定制类):__str__、__cmp__、__len__、数学运算、类型转换、@property运用、__slots__和__call__函数

    Python中的特殊方法 Python的特殊方法定义在 class中,不需要直接进行显示调用,Python的某些操作符或者函数会自动调用对应的特殊方法.这些方法如:__str__().__len__( ...

  8. 第8.18节 Python类中内置析构方法__del__

    一. 引言 基本上所有支持OOP设计的语言都支持析构方法(也称析构函数),析构方法都是在对象生命周期结束时调用,一般用来实施实例相关生命周期内访问数据的扫尾工作,包括关闭文件.释放内存.输出日志.清理 ...

  9. py魔法方法(__new__/metaclass元类、__init__、__getattr__、__callable__等)

    """ py魔法方法.py (__new__/metaclass元类.__init__.__getattr__.__callable__等)使用:1.#使用__new__ ...

最新文章

  1. c语言cythe头文件,第5章 C语言序的基本结构.doc
  2. java super是引用变量吗_Java中super的几种用法并与this的区别
  3. php网页轮播图,JavaScript_JavaScript实现图片轮播的方法,本文实例讲述了JavaScript实现图 - phpStudy...
  4. 实验9:Problem D: 从点到面
  5. [Err] 1093 - You can't specify target table 'xxx' for update in FROM clause解决方法
  6. 泛型:了解泛型与通配符
  7. K8S_Google工作笔记0004---平台规划和部署方式介绍_搭建k8s集群准备
  8. 听说社保不能补缴了,像我们这种没缴社保的打工者,该怎么办?
  9. 为什么你的 JavaScript 代码如此冗长?!
  10. Gink掉过的坑(一):将CCTableView导入到lua中
  11. 在Windows 10 环境下安装 Hadoop-3.1.2
  12. JSON与对象之间的相互转换
  13. 2022年系统分析师论文模拟题--押题
  14. python函数算面积_面积函数python
  15. JAVA程序设计题——英雄对战游戏,定义一个描述战斗单位的英雄(Hero)类,此类必须包含以下成员变量:名称(name),生命值(life),技能1攻击力(damage1),防御力(defence)
  16. Matlab 绘制双纵轴图
  17. 数值优化理论的数学基础
  18. Linux系统命令与Shell编程
  19. SAP_FI_FI包含哪些部分
  20. ZOJ 3328 Wu Xing(游戏)

热门文章

  1. 无边框对话框改变大小
  2. openresty开发系列27--openresty中封装redis操作
  3. Selenium+python --获取百度联想词
  4. 15合并两个排序的链表
  5. nodejs 全局变量和全局对象
  6. 网上找的关于微信开发一些常用代码
  7. 一个Java工程师的入门级Linux命令集
  8. 深入探究函数返回局部变量
  9. 如果你是集五福的PM,你会如何设计这个产品?
  10. PMCAFF | 阿里PM的可用性测试秘籍:有理有据的用户体验优化