有没有办法知道python中bytearray变量的长度?

Jav*_*hoa 3 python

我有这个代码:

variable = "FFFF"
message = bytearray( variable.decode("hex") )
Run Code Online (Sandbox Code Playgroud)

在此之后,我想执行以下操作:

message.len()
Run Code Online (Sandbox Code Playgroud)

但似乎bytearray没有实现“len()”之类的东西,是否有可能知道长度?

bgp*_*ter 9

在 python 中用于此的习语是len(obj), notobj.len()

>>> v = 'ffff'
>>> msg = bytearray(v.decode('hex'))
>>> len(msg)
2
Run Code Online (Sandbox Code Playgroud)

如果您正在创建自己的类并且应该能够报告其长度,请实现魔术方法__len__(self),该方法将在调用内置函数len()并传递类的实例时调用。

为什么?

请参阅Guido 的这篇旧帖子

(a) 对于某些运算,前缀符号只是比后缀更好读——前缀(和中缀!)运算在数学中有着悠久的传统,它喜欢视觉帮助数学家思考问题的符号。将我们将 x*(a+b) 之类的公式重写为 x a + x b 的简单性与使用原始 OO 表示法执行相同操作的笨拙性进行比较。

(b) 当我阅读说 len(x) 的代码时,我知道它要求某事物的长度。这告诉我两件事:结果是一个整数,参数是某种容器。相反,当我阅读 x.len() 时,我必须已经知道 x 是某种实现接口或从具有标准 len() 的类继承的容器。