【发布时间】:2013-07-27 15:12:00
【问题描述】:
出于我的目的,我创建了一个保存对象的类。
该对象的实际长度是浮点数,而不是整数。可以有 2 个对象相差 0.00001,最短的对我来说是最好的。
为方便起见,我在类中定义了一个 __len__ 方法,以便能够调用 len(obj)。
但是,python 不允许我为 __len__ 返回浮点数,只能返回整数。
我想为给定的 K 返回 int(real_length * 10**K)。
是否有更好的解决方案——使用类对象的浮点长度?
编辑:
在我的班级中,我在 n 维空间中有点,我考虑点之间的距离,这是一个实数,而不是整数。
我可以使用 len 函数吗?
【问题讨论】:
-
我认为在这种情况下你应该定义另一个函数。
-
__len__应该返回对象的长度(假定是某种集合)。如果您需要依赖__len__来实现真实性,请定义自己的len方法(或length属性),然后使用__nonzero__/__bool__。 -
我同意@kabie...
len的数字毫无意义。内置的int使用bit_length ()例如它读取它的确切含义 -
您的对象“长度”似乎与
len()引用的概念不同 -> int :序列或映射的项目数。你能澄清您的对象的确切长度是多少?会不会是分数之类的东西? -
我编辑了邮件。
标签: python