搜索
写经验 领红包

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))
Python魔法函数(__abs__和__bool__)

__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))
Python魔法函数(__abs__和__bool__)