说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的特殊方法 object.__len__(self)
实现内置函数 len() 的功能,解释器会调用此方法。一般情况下它表示一个容器的长度,当然在对象中可以实现用户自己定义的行为。
len 是一个获取集合长度的函数,它通过调用对象的 __len__
方法来工作。我们知道 __something__
属性是特殊的,执行 len() 是只表象,特殊函数一般不应该直接调用。
bool() 操作时,如果一个对象未定义 __bool__()
方法而其 __len__()
方法返回值为零,则在布尔运算中会被视为假值 False。
object.__len__(self)
应该返回对象的长度,以一个 >= 0 的整数表示。
例如:
class Data:
def __len__(self):
return 42
a = Data()
print(len(a))
# 42
print(bool(a))
# True --> Because 42 != 0
我们让 len(o) 返回姓名的数量:
class Students(object):
def __init__(self, *args):
self.names = args
def __len__(self):
return len(self.names)
s = Students('Bob', 'Alice', 'Tim')
len(s)
# 3
直接返回容器的长度:
class Item(object):
def __init__(self, data: list):
self.data = data
def __len__(self):
return len(self.data)
在 CPython 中,要求长度最大为 sys.maxsize
。如果长度大于 sys.maxsize
则某些特性 (例如 len()
) 可能会引发 OverflowError
。要通过真值检测来防止引发 OverflowError,对象必须定义 __bool__()
方法。
https://docs.python.org/zh-cn/3/reference/datamodel.html#object.__len__
更新时间:June 28, 2022, 8:19 a.m. 标签:python 特殊方法 len