请稍候,加载中....

类的特殊方法(二)

__repr__方法

用于返回一个对象的字符串表示方法.并且在可能的情况下, 返回的字符串可以被重建为python对象

import datetime

d = datetime.datetime.now()
d_string = d.__repr__()
# 生成的字符串可以通过eval直接转换为原来的日期对象
d2 = eval(d_string)

__str__方法

返回一个对象的非正式的字符串.在format(), print()时会调用.object默认为__repr__()方法

该方法主要强调输出的字符串格式可读性更好

import datetime

d = datetime.datetime.now()
d_string1 = d.__repr__()  # ‘datetime.datetime(2024, 7, 10, 18, 57, 21, 227127’
d_string2 = d.__str__()    # '2024-07-10 18:57:21.227127'

__bytes__方法

当对对象使用内置函数bytes调用时, 对象内部调用此方法

该方法必须返回一个字节对象

class A:

    def __bytes__(self):
        return b"hello"

a = A()
print(bytes(a)) #输出 b'hello'

__format__方法

当对对象使用内置函数format调用时, 对象内部调用此方法

该方法必须返回一个字符串对象

class A:
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex

    def __format__(self, format_spec):
        print(format_spec)

        return "name:"+self.name+";sex="+self.sex


a = A("luxp", "boy")
print(format(a, "<30"))

__bool__方法

当对对象调用bool内置函数时, 对象内部调用此方法

返回True或者False, 在未定义该方法的前提下默认返回True

class A:

    def __init__(self, is_debug):
        self.debug = is_debug

    def __bool__(self):
        return True if self.debug else False

a1 = A(True)
print(bool(a1))

a2 = A(False)
print(bool(a2))

Python学习手册-