Python教程

第8章 Python类的特殊方法

本文主要是介绍第8章 Python类的特殊方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

通过调用或重写python内置的方法,可以快捷地实现各种功能

# 从object类继承的方法

获取对象的基本信息

要获取的信息方法名语法信息类型
对象的自我描述repra.repr()字符串
对象的所有方法名、属性名dir直接输出:a.dir()
排序后输出:dir(a)
列表
对象的所有属性名、属性值dicta.dict字典
对象具体属性的值dict[‘key’]a.dict[‘x’]value
class A():
    def __init__(self,x):
        self.x = x
    def b(): pass
a = A(1)

>>> a.__repr__()
'<__main__.A object at 0x0000000002F5E9B0>'
>>> a.__dir__()
['x', '__module__', '__init__', ...]
>>> dir(a)
['__class__', '__delattr__'., ...]
>>> a.__dict__
{'x': 1}
>>> a.__dict__['x']
1

对象的基本操作

操作对象的属性时,python会自动调用相对应的方法。name要用单/双引号括起来

操作自动调用的方法参数
访问getattr / getattributename
赋值——赋新值或新增类成员setattrname, value
删除delattrname
>>> a.x = 2
>>> a.x
2
>>> del a.x
>>> a.x
AttributeError: 'A' object has no attribute 'x'

对象及其成员

方法名作用name
getattr(object, name)获取对象中name属性的值只能是属性
setattr(object, name, value)设置对象中name属性的值可以是属性或方法
hasattr(object, name)检查name是否在object中可以是属性或方法

序列相关方法

key为整数或slice对象

方法名参数作用
len-返回元素个数
getitemkey获取指定索引对应的元素
setitemkey, value设置指定索引对应的元素
delitemkey删除指定索引对应的元素
containsitem判断指定元素是否在序列内

# 取整相关方法

方法名roundtruncfloorceil
作用四舍五入取整截断取整向下取整向上取整

# 运算符相关方法

比较运算符(方法在object中)

==!=>>=<<=
eqnegtgeltle

算术运算符

+-*/**//
addsubmultruedivpowfloordiv
求余运算方法名返回结果
%mod余数
divmoddivmod包含商和余数的元组

位运算符(同时也是算术运算符)

&|^<<>>
andorxorlshiftrshift

单目运算符

为单目求负(-)为单目求正(+)为单目求反(~)
negposinvert

# 类型转换相关方法

方法名bytescomplexintfloat
将对象转换为字节复数整数浮点数

迭代器(iterator)相关方法

列表、元组、字典等可迭代的对象,都属于迭代器

内置方法作用
iter返回一个迭代器
next返回迭代器的下一个元素
reverse为内置的reverse()函数提供支持
>>> a = [1,2,3]
>>> b = a.__iter__()
>>> next(b)
1
>>> next(b)
2

# 生成器(generator)相关方法:yield

yield:把跟随其后的变量变成一个生成器,每次返回一个迭代元素

基础代码

def a():
    for i in range(3):
        yield i
b = a()

用next()获取迭代元素

>>> next(b)
0
>>> next(b)
1

用for循环遍历生成器

>>> for i in b: print(i)

0
1
2

next() + for

如果已经用next()提取了一部分元素,for循环只能提取剩下的元素

>>> next(b)
0
>>> for i in b: print(i)

1
2

生成器的方法

方法作用
send()外部程序向生成器传递数据,由yield接收
第一次只能传入None,next()之后才能传入具体数据
每运行一次send()方法都会运行next()
close()停止生成器,之后不能再用next()
throw()在生成器的yield语句内引发异常
list(b)生成器转列表
tuple(b)生成器转元组
def a():
    for i in range(3):
        out_value = yield i
        print(out_value)
b = a()

>>> next(b)
0
>>> b.send(9)
9
1

更多内置方法

方法作用
del 对象销毁对象(对象的引用次数变为0时),释放内存空间
hasattr(object, name)检查属性或方法是否存在,返回bool值
call调用方法、属性——没有__call__方法的对象是不可调用的
format(format, spec)将对象转换成格式化字符串
abs返回绝对值

这篇关于第8章 Python类的特殊方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!