栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python——类的特殊方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python——类的特殊方法

定义

包含在类中 用于实现特殊功能 在执行一些特殊操作时会被调用 一般由前后两个下划线组成

来源 继承于基类object 基类中定义了很多特殊方法

协议机制 定义某些方法绑定某些任务 如果想执行该任务 直接使用魔法方法即可

自省机制

定义 在程序中执行过程中对对象进行检查、描述 作用、属性方法等

自省函数 dir、id、type、help、isinstance等

作用 让程序功能更灵活、更好实现

例子

dir(print) # [ __call__ , __class__ , __delattr__ , __dir__ , __doc__ , __eq__ ...]
_repr_和__str__方法

定义 当对象被转换为字符串时自动调用这两个方法

两者的区别

__repr__ 类似将对象重写 无论以字符串输出还是对象本身 都会调用该方法

__str__ 只有将对象以字符串输出才会调用 读取对象本身不调用

__del__方法

定义 当对象被回收时调用此方法 类似于C 中的析构函数

注意 当不删除对象 程序结束时也会自动调用该方法

__dict__方法

定义 返回一个字典 可查看对象中所有属性和对应的值

class Test:
 def __init__(self):
 self.name bang ;
if __name__ __main__ :
 test Test()
 print(test.__dict__) # 返回所有属性的一个字典
 print(test.__dict__[ name ])
 print(test.name) # 两者的返回值相同
__len__方法

定义 当对象作为len函数的参数时 自动调用此方法

注意点 基类object中并没有定义该魔法方法 该方法的返回值必须为整数int

__call__方法

定义 使得对象可以被调用、当对象被调用时 将自动执行此方法 可定义参数

class Test(object):
 def __call__(self, num):
 print(num)
if __name__ __main__ :
 test Test()
 test(2) # 2
__doc__方法

定义 查看对象的帮助文档 作用和help函数一致 help函数实际是调用该方法

__slots__方法

定义 限制为类和对象添加属性和方法

好处 为约定的属性名或方法名建立’描述符’ 访问速度更快 对象占用内存更小

坏处 动态灵活性不存在

class Test:
 __slots__ [ name ] # 在列表中定义可以添加的属性或方法名
__iter__和__next__方法

定义 使对象可以被迭代 并且每次迭代时返回一些东西 遍历过程就是迭代 迭代特点是只能往前

作用 iter返回的对象即为可迭代对象 每次迭代是什么内容则看next方法返回什么

使用案例

class Test:
 def __init__(self):
 self.num 0
 def __iter__(self):
 return self # 将当前对象变成可迭代对象
 def __next__(self):
 if self.num 10:
 raise StopIteration: # 当返回这个异常时 终止迭代
 else:
 self.num 1
 return self.num
if __name__ __main__ :
 test Test()
 for i in test:
 print(i) # 输出1 - 11
__enter__和__exit__方法

定义 用于创建 上下文管理器 对象

Python中’上下文’对象’ 可以定义一个对象一开始要做什么 最后要做什么

with语句 用于执行 上下文管理器 一般在打开文件使用最多

作用 以更优雅的方式操作资源 例如 文件操作、网络操作、访问数据库等

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号