_ _ init() _ _(self[,...])

我们有时在类定义写__init()__方法,但是有时又没有。__init()__方法相当于其他面向对象的编程语言中的构造方法,也就是类在实例化成对象时首先会调用的一个方法。当我们写代码时需要进行初始化的时候,我们才去写 _ _ init() _ _方法,没有需要时我们自然不会去写入这个方法。下面我们给出一个实例,我们先定义一个类,拥有计算面积与周长两个方法,然后需要对象在初始化拥有长和宽两个参数

class Test:
def __init__(self, x, y):
self.x = x
self.y = y def getArea(self):
return self.x * self.y def grtPeri(self):
return (self.x + self.y) * 2



这里需要注意的是__init()__方法的返回值一定是none,其他就会报错。

_ _new _ _(cls[,...])

_ _ new _ _()才是一个对象实例化时调用的第一个方法,它和其他的双下划线包围的方法不同,它的第一个参数不是sel而是这个类(cls),而其他的参数会直接传递给 _ _ init() _ _ 方法的。

_ _ new _ _()方法需要返回一个实例对象,通常是cls这个实例化的对象,当然我们也可以返回给其他的对象。

_ _ new _ _()方法平时我们很少去重写它,一般让python用默认的执行方案就行了。但是还会有情况需要我们取重写这个方法,比如当继承一个不可变的类型时,它的特性就会凸显出来。

下面给出实例。

class CapStr(str):
def __new__(cls, string):
string = string.upper()
return str.__new__(cls, string)

这里返回str.new(cls, string)的优点在于哪呢,因为此时我们只需要注意我们在此处重写的部分,其他琐碎的东西可以完全交给python的默认机制就行了,交给它处理可比我们自己写出错的概率要小得多。

_ _ del _ _(self)

如果说前面说的两个方法是对象的构造器的话,那么python也提供了一个析构器,叫做 _ _ del _ _(self)方法。当对象将要被销毁的时候,这个方法就会调用。但是要注意的是,冰粉del x就相当于调用x. _ _ del _ _(), _ _ del _ _()方法是当垃圾回收机制回收这个对象时候调用的。

举个例子

class A:
def __init__(self):
print("方法1被调用") def __del__(self):
print("方法2被调用")

最新文章

  1. VS2013编译google protobuf 出现问题error C3861: “min”:
  2. 8-05分支结构CASE..END
  3. YARN中自己总结的几个关键点
  4. TCP三次握手,数据传输,四次挥手
  5. 廖雪峰js教程笔记7 基本类型和包装类型
  6. ASP.NET MVC系列 框架搭建(二)之仓储层的优化
  7. Threejs 使用的3D格式
  8. 100个iOS开发面试题汇总-王刚韧的技术博客
  9. linux xargs 使用
  10. WPF学习(1)WPF概述
  11. CodeForces 718C Sasha and Array
  12. 201521123037 《Java程序设计》第6周学习总结
  13. java中表示二进制、八进制、十进制、十六进制
  14. 03-Python入门学习-Python基础
  15. Git 2.x 中git push时遇到 push.default 警告的解决方法
  16. Java17-java语法基础——泛型
  17. github使用心得和链接
  18. ReportMachine 自定义代码 画细线
  19. openlayers3教材详解及demo(完整)
  20. CF97C Winning Strategy

热门文章

  1. ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
  2. Python (深浅拷贝)
  3. 重新认识 Spring IOC
  4. 面向开发者的Docker实践
  5. 使用ramdisk启动ubuntu文件系统
  6. 【杂谈】Disruptor——RingBuffer问题整理(一)
  7. 【Spark】如何用Spark查询IP地址?
  8. vue项目中使用bpmn-自定义platter
  9. 数学建模(二)优劣解距离法Topsis模型部分
  10. [hdu1532]最大流