python实战方法(Python常用特殊方法实例总结)
python实战方法
Python常用特殊方法实例总结本文实例讲述了Python常用特殊方法。分享给大家供大家参考,具体如下:
1 __init__和__new__
__init__
方法用来初始化类实例;__new__
方法用来创建类实例。
主要的区别:
1).__init__通常用于初始化一个新实例,控制初始化的过程,发生在类实例被创建完以后。它是实例级别的方法。
2).__new__通常用于控制生成一个新实例的过程。它是类级别的方法。
__new__具体的作用:
1) 继承一些不可变的class时(比如int, str, tuple),提供一个自定义这些类的实例化过程的途径
2) 实现自定义的metaclass
例子:实现永远返回正数
|
class PositiveInteger( int ): #继承类int def __new__( cls , value): return super ().__new__( cls , abs (value)) #返回父类的__new__方法 i = PositiveInteger( - 3 ) #类实例化 print (i) 3 |
注意点:
关于__init__
方法:第一个参数必须是self
;无返回值
关于__new__
方法:
1) 继承自object的新式类才有__new__
2) __new__
至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
3) __new__
必须要有返回值,返回实例化出来的实例(也就是__init__
的self
),可以返回父类__new__
出来的实例,或者直接是object的__new__
出来的实例
2 __del__方法
当对象所有的引用都被删除后触发该方法,代码如下:
|
class Testdel(): def __del__( self ): print ( "using __del__" ) t = Testdel() t1 = t del t1 del t using __del__ |
3 __str__和__repr__
__repr__
和__str__
这两个方法都是用于显示的,__str__
是面向用户的,而__repr__
面向程序员
定义__repr__
的简单方法:定义了__str__
之后,赋值给__repr__
,如下:
|
__repr__ = __str__ |
4 属性访问
__getattr__(self, name)
:当用户试图获取一个不存在的属性(name)时的行为
__getattribute__(self, name)
:当类的属性被访问时的行为
__setattr__(self, name, value)
:当一个属性被设置时的行为
__delattr__(self, name)
:当一个属性被删除时的行为
死循环陷阱:
|
class Rectangle: def __init__( self , width = 0 , height = 0 ): self .width = width self .height = height def __setattr__( self , name, value): if name = = ‘square': self .width = value self .height = value else : self .name = value def getArea( self ): return self .width * self .height r = Rectangle( 3 , 4 ) |
实例化r = Rectangle(3, 4)
就会出现死循环,因为在__init__
里面出现了设置属性值,跳到__setattr__
里面e的self.name = value
这一句,也就是继续赋值操作self.width = width
,所以进入死循环。解决方法:
1) else子句改为:super().__setattr__(name, value)
2) else子句改为:self.__dict__[name] = value
5 描述符:将某种特殊类型的类的实例指派给另一个类的属性
特殊类型是指:
__get__(self, instance, owner)
:访问属性,返回属性的值
__set__(self, instance, value)
:用于设置属性,不返回任何内容
__delete__(self, instance)
:删除属性,不返回任何内容
self
:描述符类本身的实例,instance
:拥有者类的实例,owner
:拥有者,类本身
|
class MyDecriptor: def __get__( self , instance, owner): #理解self instance owner的含义 print (‘getting...', self , instance, owner) def __set__( self , instance, value): print (‘setting…', self , instance,value) def __delete__( self , instance): print (‘deleting…', self , instance) class Test: x = MyDecriptor() test = Test() #实例化 test.x test.x = ‘X - man' del test.x |
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/heshiliqiu/article/details/82529554
- python编程ai人工智能(AI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是TA)
- python核心编程内容(顶级大神Linux,Python,Go,PHP之父谁是夜猫子?用Python揭秘!)
- python2个字典合成(Python两个字典键同值相加的几种方法)
- python旅游(详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?)
- 如何用python在微信里自动回复(Python实现微信自动好友验证,自动回复,发送群聊链接方法)
- python selenium用法详解(python selenium执行所有测试用例并生成报告的方法)
- python最基本的编程工具(5款Python程序员高频使用开发工具推荐)
- python 获取ip mac 地址(Python3获取电脑IP、主机名、Mac地址的方法示例)
- Python实现合并两个有序链表的方法示例(Python实现合并两个有序链表的方法示例)
- python在mysql创建数据库(python3对接mysql数据库实例详解)
- 怎么查看python的安装路径(查看python安装路径及pip安装的包列表及路径)
- python单例编程(浅谈Python反射 & 单例模式)
- 如何去阿里云解析域名(利用Python+阿里云实现DDNS动态域名解析的方法)
- python高德地图可视化(利用python和百度地图API实现数据地图标注的方法)
- python定时任务详解(使用Python做定时任务及时了解互联网动态)
- python用于机器人(python控制nao机器人身体动作实例详解)
- 追连续剧,品古今联4 明代三杨,联妙诗佳(追连续剧品古今联4)
- 三杨 共辅四朝帝王,构建明帝国内阁行政圈(三杨共辅四朝帝王)
- 红色文化进国企(红色文化进国企)
- 车友的选择| 轮毂该如何选(车友的选择轮毂该如何选)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
热门推荐
- MySQL 8.0.19安装详细教程(windows 64位)(MySQL 8.0.19安装详细教程windows 64位)
- linux系统的组成架构(Linux输入子系统框架原理解析)
- javascript怎么生成html控件(JavaScript+html实现前端页面滑动验证2)
- python的基础数据结构有哪些(详解python的四种内置数据结构)
- Resharper的使用
- 如何重新配置mysql的端口(如何快速修改MySQL用户的host属性)
- pythonexcel生成报表(python生成每日报表数据Excel并邮件发送的实例)
- css3 图片样式处理(CSS3实现漂亮的照片墙效果的简单实例推荐)
- dede搜索模板代码(DEDE调用指定文章ID来调用特定文档)
- 测试用例写哪些方面
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9