python中什么是实例-在Python中使用’__rsub__’方法的典型实例是什么?
基本示例.您編寫自己的類似int的類:
class FooInt:
... other stuff elided ...
def __sub__(self, other):
if isinstance(other, FooInt):
return self.__class__(self.intvalue - other.intvalue)
elif isinstance(other, int):
return self.__class__(self.intvalue - other)
else:
return NotImplemented
現在,您可以執行以下代碼:
FooInt(123) - 456
這很好用; Python在左側看到FooInt,看到它有__sub__,然后調用FooInt .__ sub __(FooInt(123),456),該返回沒有錯誤,這很好.
接下來我們看到:
123 - FooInt(456)
Python嘗試調用int .__ sub __(123,FooInt(456)),但int不知道如何處理FooInt,并返回NotImplemented;它不知道intvalue具有可用于此目的的值.此時,Python不能只調用FooInt .__ sub __(FooInt(456),123),因為它不能假定減法是可交換的(實際上,在大多數數值系統中,在這種情況下,減法不是可交換的)不能只交換運算符的左右兩側并獲得正確的結果).這就是__rsub__存在的原因;它使您可以在告訴其他類兩件事的同時檢查另一個類以尋求一種處理操作的方法:
>位于二進制運算符的右側(允許它正確處理可交換性)
>左側的項目不知道如何處理該操作,因此這是正確解決該問題的最后機會
第二點也很重要.在實現__xxx __(左手運算符)時,您希望對識別的類型非常保守.如果您不知道事實是使用已知的正確處理程序來處理已知的具體類型,則不應嘗試處理未知類型;另一種類型可能知道如何正確執行該操作,因此您返回NotImplemented并讓另一端進行處理.當您實現__rxxx__時,您是最后一次機會.另一個人不知道該怎么做,因此,如果您有任何處理方法,則您應該放任自流,并盡力而為.您可以在Implementing the arithmetic operations的Python文檔中看到這一點; __xxx__操作檢查具體類型(對于小數,它檢查小數,整數,浮點數和復數),而__rxxx__運算符檢查常規接口(數字,整數,數字,有理數,數字,實數等).
總結
以上是生活随笔為你收集整理的python中什么是实例-在Python中使用’__rsub__’方法的典型实例是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉因座椅螺栓松动问题在美国召回 34
- 下一篇: 上汽奥迪员工内购价最高优惠16万 客服: