__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])
复制代码

 

 

posted @   ascertain  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示