我有这段代码:
variable = "FFFF"
message = bytearray( variable.decode("hex") )
在此之后,我想执行以下这样的事情:
message.len()
但似乎bytearray没有实现类似“len()”的东西,是否有可能知道长度?
答案 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()。