python函数重写怎么理解-Python教程

资源魔 28 0
正在自界说类内增加相应的办法,让自界说类创立的实例能像内建工具同样进行内建函数操作,这就是函数重写。

工具转字符串函数:repr(obj) ,前往一个能代表此工具的表白式字符串,通常eval(repr(obj)) == obj (这个字符勾通常是给python诠释执行器运转用的),str(obj) 经过给定的工具前往一个字符串(这个字符勾通常是给人浏览的)。

工具转字符串函数的重写办法:

repr(obj) 函数的重写办法:

def __repr__(self):

str(obj) 函数的重写办法:

def __str__(self):

阐明:

1. str(obj) 函数先查找, obj.__str__()办法,挪用此办法并前往后果

2. 假如不obj.__str__()办法时,则前往obj.__repr__()办法的后果并前往

3. 假如obj.__repr__办法没有存正在,则挪用object类的__repr__实例办法显示<__main__.XXXX object at 0xAABBCCDD>格局的字符串

示例:

# 此示例表示经过重写 repr 以及 str办法扭转转为字符串的规定
class MyNumber:
    def __init__(self, value):
        '结构函数,初始化MyNumber工具'
        self.data = value
 
    def __str__(self):
        '''转换为一般人辨认的字符串'''
        # print("__str__办法被挪用!")
        return "自界说数字类型工具: %d" % self.data
 
    def __repr__(self):
        '''转换为eval可以辨认的字符串'''
        return 'MyNumber(%d)' % self.data
 
 
n1 = MyNumber(100)
n2 = MyNumber(200)
print('repr(n1) ====>', repr(n1))
print('str(n2)  ====>', str(n2))

相干保举:《Python视频教程》

其它内建函数的重写办法:

__abs__ abs(obj) 函数

__len__ len(obj) 函数(必需前往整数)

__reversed__ reversed(obj) 函数(必需前往可迭代工具

__round__ round(obj) 函数

示例:

# 此示例表示abs 函数的重写
class MyInteger:
 
    def __init__(self, v):
        self.data = v
 
    def __repr__(self):
        return 'MyInteger(%d)' % self.data
 
    def __abs__(self):
        v = abs(self.data)
        return MyInteger(v)  # 用v创立另外一个MyInteger工具
 
    def __len__(self):
        return 10000
 
I1 = MyInteger(-10)
print('I1 =', I1)
 
I2 = abs(I1)
print("I2 =", I2)
 
print('len(I2)=', len(I2))  # 10000

数值转换函数的重写:

__complex__ complex(obj) 函数

__int__ int(obj) 函数

__float__ float(obj) 函数

__bool__ bool(obj) 函数 (见上面布尔测试函数重载)

示例:

# 此示例表示数据转换结构函数的重写办法
class MyNumber:
 
    def __init__(self, value):
        self.data = value
 
    def __repr__(self):
        return 'MyNumber(%d)' % self.data
 
    def __int__(self):
        'int函数的重载'
        return self.data
 
n1 = MyNumber(100)
x = int(n1)
print(n1)
 
print(bool(n1))  # True
n2 = MyNumber(0)
print(bool(n2))  # True

布尔测试函数重写:

格局:

__bool__

作用:

用于bool(obj) 函数取值

用于if语句的真值表白式中

用于while 语句的真值表白式中

阐明:

1. 当自界说的类内有 __bool__(self) 办法时,以此办法的前往值作为bool(obj) 的前往值

2. 当没有存正在__bool__(self) 办法时,bool(x) 前往__len__(self) 办法的前往值能否为零来测试布尔值

3. 当没有存正在__len__(self) 办法时,则间接前往True

示例:

# 此示例表示bool(x) 函数的重写
class MyList:
    '自界说类型的列表,用来保留数据,外部用一个列表来存储数据'
 
    def __init__(self, iterable=()):
        self.data = [x for x in iterable]
 
    def __repr__(self):
        return 'MyList(%s)' % self.data
 
    def __len__(self):
        '''前往长度'''
        print("__len__办法被挪用")
        return len(self.data)
 
    def __bool__(self):
        print("__bool__办法挪用")
        for x in self.data:
            if not x:
                return False
        return True
        # return False  # <<=== 一切工具都为False
 
myl = MyList([0, -1, 2, -3])
# myl = MyList()
print(myl)
print(bool(myl))
if myl:
    print("myl为真值")
else:
    print('myl为假值')

以上就是python函数重写怎样了解的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题 函数重写

抱歉,评论功能暂时关闭!