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

时间:2015-03-27 15:26:54

标签: python

我有这段代码:

variable = "FFFF"
message = bytearray( variable.decode("hex") )

在此之后,我想执行以下这样的事情:

message.len()

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

1 个答案:

答案 0 :(得分:4)

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

>>> v = 'ffff'
>>> msg = bytearray(v.decode('hex'))
>>> len(msg)
2

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

为什么?

请参阅Guido的this old post

  

(a)对于某些操作,前缀表示法只读取比   postfix - prefix(和infix!)操作有着悠久的传统   数学,喜欢视觉效果帮助的符号   数学家思考问题。比较我们的简单方法   将x *(a + b)之类的公式重写为x a + x b的笨拙   使用原始OO表示法做同样的事情。

     

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