python常用的把戏本领

python常用的把戏本领

初始化本领__init__

触发体制:范例化东西之后登时触发

参数:至罕见一个self,接受暂时东西,其余参数按照须要举行设置

归来值:无

效率:初始化东西的分子

结构本领__new__

触发机会: 范例化东西时机动触发(在__init__之前触发)

参数:起码一个cls 接受暂时类,其余参数按照初始化本领参数确定

归来值:必需归来一个东西范例,没有归来值,则范例化东西的截止为None

效率:范例化东西

提防:范例化东西是Object类底层实行,其余类接受了Object的__new__才不妨实行范例化东西。

析构本领__del__

触发机会:当该类东西被废弃时,机动触发

参数:一个self,接收暂时东西

归来值:无

效率:封闭或开释东西创造时资源

提防:del不确定会触发当火线法,惟有暂时东西没有任何变量援用时才会触发

call

挪用东西的把戏本领

触发机会:将东西看成因变量挪用时触发,办法: 东西()

参数:起码一个self接受东西,其他按照挪用时参数确定

归来值:按照情景而定

效率:不妨将搀杂的办法举行兼并操纵,缩小挪用的办法,简单运用

提防:无

len

触发机会:运用len(东西) 的功夫触发

参数:一个参数self

归来值:必需是一个整型

效率:不妨树立为检验和测定东西分子个数,然而也不妨举行其余大肆操纵

提防:归来值必需必需是平头,要不语法报错,其余该诉求是方法诉求。

str

触发机会:运用print(东西)大概str(东西)的功夫触发

参数:一个self接受东西

归来值:必需是字符串典型

效率:print(东西时)举行操纵,获得字符串,常常用来赶快操纵

提防:无

repr

触发机会:在运用repr(东西)的功夫触发

参数:一个self接受东西

归来值:必需是字符串

效率:将东西转运用repr化为字符串时运用,也不妨用来赶快操纵

bool

触发机会: 运用bool(东西)的功夫触发

参数:一个self接受东西

归来值:必需是布尔值

效率:按照本质情景确定,不妨动作赶快办法运用

提防:仅符合于归来布尔值的操纵

format

触发机会:运用字符串.format(东西)功夫触发

参数:一个self接受东西,一个参数接受format的{}中的方法,比方:>5

归来值:必需是字符串

效率:树立东西不妨动作format的参数,而且自设置东西方法化的准则

提防:无

比拟演算关系把戏本领

__ lt__(self, other):

设置小于号的动作:x < y 挪用 x.lt(y)

__ le__(self, other):

设置小于即是号的动作:x <= y 挪用 x.le(y)

__ eq__(self, other) :

设置即是号的动作:x == y 挪用 x.eq(y)

__ ne__(self, other):

设置不等号的动作:x != y 挪用 x.ne(y)

__ gt__(self, other):

设置大于号的动作:x > y 挪用 x.**gt(y)

__ ge__(self, other) :

设置大于即是号的动作:x >= y 挪用 x.ge(y)

算术演算关系把戏本领

add(self, other) 设置减法的动作:+

sub(self, other) 设置减法的动作:-

mul(self, other) 设置乘法的动作:*

truediv(self, other) 设置真除法的动作:/

floordiv(self, other) 设置平头除法的动作://

mod(self, other) 设置取模算法的动作:%

divmod(self, other) 设置当被 divmod() 挪用时的动作

pow(self, other[, modulo]) 设置当被 power() 挪用或 ** 演算时的动作

lshift(self, other) 设置按位左移位的动作:<<

rshift(self, other) 设置按位右移位的动作:>>

and(self, other) 设置按位与操纵的动作:&

xor(self, other) 设置按位异或操纵的动作:^

or(self, other) 设置按位或操纵的动作:|

赋值演算关系把戏本领

iadd(self, other) 设置赋值减法的动作:+=

isub(self, other) 设置赋值减法的动作:-=

imul(self, other) 设置赋值乘法的动作:=

itruediv(self, other) 设置赋值真除法的动作:/=

ifloordiv(self, other) 设置赋值平头除法的动作://=

imod(self, other) 设置赋值取模算法的动作:%=

ipow(self, other[, modulo]) 设置赋值幂演算的动作:**=

ilshift(self, other) 设置赋值按位左移位的动作:<<=

irshift(self, other) 设置赋值按位右移位的动作:>>=

iand(self, other) 设置赋值按位与操纵的动作:&=

ixor(self, other) 设置赋值按位异或操纵的动作:^=

ior(self, other) 设置赋值按位或操纵的动作:|=

一元演算关系把戏本领

pos(self) 设置正号的动作:+x

neg(self) 设置负号的动作:-x

abs(self) 设置当被 abs() 挪用时的动作

invert(self) 设置按位求反的动作:~x

典型变换关系把戏本领

complex(self) 设置当被 complex() 挪用时的动作(须要归来适合的值)

int(self) 设置当被 int() 挪用时的动作(须要归来适合的值)

float(self) 设置当被 float() 挪用时的动作(须要归来适合的值)

round(self[, n]) 设置当被 round() 挪用时的动作(须要归来适合的值)

index(self)

当东西是被运用在切片表白式中时,实行整形强迫变换

即使你设置了一个大概在切片时用到的定制的数值型,你该当设置 index

即使 index 被设置,则 int 也须要被设置,且归来沟通的值

左右文处置关系把戏本领(with)

enter(self)

1. 设置当运用 with 语句时的初始化动作

2. enter 的归来值被 with 语句的目的大概 as 后的名字绑定

exit(self, exctype, excvalue, traceback)

1. 设置当一个代码块被实行大概中断后左右文处置器该当做什么

2. 普遍被用来处置特殊,废除处事大概做少许代码块实行结束之后的凡是处事

容器典型关系把戏本领

len(self) 设置当被 len() 挪用时的动作(归来容器中元素的个数)

getitem(self, key) 设置获得容器中指定元素的动作,十分于 self[key]

setitem(self, key, value) 设置树立容器中指定元素的动作,十分于 self[key] = value

delitem(self, key) 设置简略容器中指定元素的动作,十分于 del self[key]

iter(self) 设置当迭代容器中的元素的动作

reversed(self) 设置当被 reversed() 挪用时的动作

contains(self, item) 设置当运用分子尝试演算符(in 或 not in)时的动作

把戏本领示例

init、new、__del__的运用

class People(object):

# 创造东西

def __new__(cls, *args, **kwargs):

print("触发了结构本领")

ret = super().__new__(cls) # 挪用父类的__new__()本领创造东西

return ret ## 将东西归来

# 范例化东西

def __init__(self, name, age):

self.name = name

self.age = age

print("初始化本领")

# 简略东西

# del 东西名大概步调实行中断之后

def __del__(self):

print("析构本领,简略东西")

if __name__ == '__main__':

p1 = People('xiaoming', 16)

输入:

触发了结构本领

初始化本领

析构本领,简略东西

运用__call__本领实行斐波那契数列

斐波那契数列指的是如许一个数列 0, 1, 1, 2, 3, 5, 8, 13

更加指出:第0项是0,第1项是第一个1。从第三项发端,每一项都即是前两项之和。

class Fib(object):

def __init__(self):

pass

def __call__(self,num):

a,b = 0,1;

self.l=[]

for i in range (num):

self.l.append(a)

a,b= b,a+b

return self.l

def __str__(self):

return str(self.l)

__rept__=__str__

f = Fib()

print(f(10))

输入:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

分享到 :
相关推荐

Leave a Reply

Your email address will not be published. Required fields are marked *