__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))
讨论区