How to test if a class had explicietly defined a __gt__?
有没有一种方法可以测试服装类是否明确定义了像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class myclass1: def __init__(self, val): self.val = val def __gt__(self, other): if type(other) is int: return self.val > other else: return self.val > other.val class myclass2: def __init__(self, val): self.val = val |
因为我只为
1 2 3 | x1 = myclass1(5); x2 = myclass2(2) x1 > x2 x2 < x1 |
号
在这两种情况下都将使用
所以我的问题是:有没有一种方法可以知道为自定义类显式定义了哪些不等式?因为
1 | hasattr(x2, '__gt__') |
返回
您可以在
1 2 3 4 5 | '__gt__' in x2.__class__.__dict__ Out[23]: False '__gt__' in x1.__class__.__dict__ Out[24]: True |
或者,为了不依赖衬垫而使用内置组件:
1 2 3 4 5 | '__gt__' in vars(type(x1)) Out[31]: True '__gt__' in vars(type(x2)) Out[32]: False |
号