热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何比较带有浮点数或整数的类返回?

如何解决《如何比较带有浮点数或整数的类返回?》经验,为你挑选了1个好方法。

我想将__repr__类的浮点数或整数进行比较。

class TestClass:   
    def __init__(self, a = 5): 
        self.a = a     
    def __repr__(self):
        return self.a

显然会返回错误,因为a不是string

TypeError: __repr__ returned non-string (type int)

如果将其设置为字符串,则打印正确:

>>> TestClass()
5

但打印结果不可比:

>>> TestClass() == 5
False

我应该用什么来比较类返回使它TestClass() == 5True



1> gmds..:

都不行

__repr__仅在需要字符串并获取对象的情况下调用,例如print从命令行或从命令行作为单个表达式获取,并且被表示为对象的人类可读表示(希望可以从中重建)。

回想一下,在不重载的情况下__repr__,从命令行获得的是一个字符串,该字符串表示对象的标识(与相反),例如:

<__main__.TestClass at 0x20feb8836d8>

另一方面,您正在做的TestClass() == 5价值比较。

因此,True如果您定义了__eq__,则仅求和等于方法:

class TestClass:   
    def __init__(self, a = 5): 
        self.a = a    

    def __eq__(self, other):
        return self.a == other

print(TestClass() == 5)

输出:

True


推荐阅读
author-avatar
cindy翻不清的旧伟_334
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有