有沒有辦法測試一個服裝類是否明確定義了一個屬性如__gt__
?爲了把東西放在上下文中考慮這兩個類:如何測試一個類是否明確定義了__gt__?
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
既然我定義的屬性不平等僅myclass1
而不是myclass2
調用
x1 = myclass1(5); x2 = myclass2(2)
x1 > x2
x2 < x1
會在兩種情況下使用myclass1.__gt__
。如果我定義了myclass2.__lt__
,最後一行會調用它。但我沒有。因此x1
的__gt__
在這兩個調用中都佔有優勢。我想我明白這一點(但歡迎評論)。
所以我的問題:有沒有辦法知道哪些不平等已明確定義爲自定義類?因爲
hasattr(x2, '__gt__')
無論如何返回True
。
您可以使用目錄(類名),其中將爲您提供屬於您的班級的所有方法和屬性。 –
@ PiyushS.Wanare - 不管這是否明確定義了'__lt__'。 – Aguy
@ PiyushS.Wanare看看'dir()'的工作方式:http://stackoverflow.com/q/33087797/846892 –