> 技术操作
Python魔法函数(__abs__和__bool__)
导语:Python魔法函数(__abs__和__bool__)
__abs__
魔法函数__abs__用于定义对象的绝对值操作。
创建类Victor,实现__abs__方法,定义对象的绝对值是x的绝对值加上y的绝对值
class Victor: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return &34; % (self.x, self.y) def __str__(self): return &34; % (self.x, self.y) def __add__(self, other): x = self.x + other.x y = self.y + other.y return Victor(x,y) def __mul__(self, other): return Victor(self.x*other, self.y*other) def __abs__(self): return abs(self.x) + abs(self.y)
创建Victor对象进行测试,当对对象使用abs函数时,解释器会自动调用__abs__方法。
v1 = Victor(1,2)print(abs(v1))
__bool__Python魔法函数__bool__用于定义对象的布尔值。
在类Victor中实现__bool__方法,规定当x和y的和为0是返回False,否则返回True。
class Victor: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return &34; % (self.x, self.y) def __str__(self): return &34; % (self.x, self.y) def __add__(self, other): x = self.x + other.x y = self.y + other.y return Victor(x,y) def __mul__(self, other): return Victor(self.x*other, self.y*other) def __abs__(self): return abs(self.x) + abs(self.y) def __bool__(self): return bool(self.x + self.y)
创建Victor对象,使用bool函数,Python解释器会自动调用对象的__bool__方法。
v1 = Victor(1,2)print(bool(v1))