__boot__ __repr__ __str__ __bytes__
__bool__
内建函数bool(),或者对象放在逻辑表达式的位置,调用这个函数返回布尔值,没有定义__bool__(),就找__len__()返回长度,非0为真,如果__len__()也没有定义,所有实例都返回真
class B:pass
print(bool(B()))
class C:
def __bool__(self):
return False
print(bool(C))
print(bool(C()))
class D:
def __len__(self):
return 0
print(bool(D()))
__repr__
内建函数repre()对一个对象获取字符串表达式,如果一个类定义了__repr__(),但没有定义__str__,那么在请求该类的实例的'非正式'字符串表示时,也将调用__repr__()
__str__
str()函数,内建函数format,print()调用,需要返回字符串表达式
__bytes__ bytes(),返回一个对象的bytes表达式,即返回bytes对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Niz: def __repr__(self): return str( 'repr' ) def __str__(self): return str( 'str' ) def __bytes__(self): return b 'zcx' print(Niz()) b=[Niz(),Niz()] print(b) p=str(b) # 对list和Niz()调用str的区别 print(p) print(*b) print(list(map(str,b))) print(bytes(Niz())) print(Niz().__bytes__()) |
class B:
def __init__(self):
self.a='a'
self.b="b"
def __repr__(self):
return 'repr: {}, {}'.format(self.a,self.b)
def __str__(self):
return 'str: {}, {}'.format(self.a,self.b)
print(B()) # print调用__str__
print([B()]) # []调用__str__,但list内部调用__repr__
print(([str(B())])) # str()调用__str__
class P:
def __str__(self):
return 'str: {}'.format(self)
def __repr__(self):
return 'repr: {}'.format(888)
p=P()
print([p])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律