每日進步一點點:__or__與__ror__等魔法函式的學習
阿新 • • 發佈:2022-01-29
人生苦短,我用python!#!/usr/bin/env python # _*_ coding:utf-8 _*_ # DevVersion: Python3.6.8 # Date: 2021-11-16 22:39 # PyCharm|test from functools import partial # 功能實現 class Change: def __init__(self, func): self.func = func def __or__(self, other): return self.func(other) def __ror__(self, other): self.func = partial(self.func, other) return self 到 = Change(range) for i in 2 | 到 | 10: print(i) # TODO 知識點 """ |到| 代表三部分,左邊的"|",中間的"到", 右邊的"|" """ # 魔法函式 __or__ 定義例項的右側遇到|時的具體行為 # 魔法函式 __ror__ 定義當例項左側遇到|時的具體行為 # 魔法函式 __add__ 定義例項的右側遇到+時的具體行為 # 魔法函式 __radd__ 定義當例項左側遇到+時的具體行為 # 魔法函式 __xor__ 定義例項的右側遇到^時的具體行為 # 魔法函式 __rxor__ 定義當例項左側遇到^時的具體行為 # 魔法函式 __mul__ 定義例項的右側遇到*時的具體行為 # 魔法函式 __rmul__ 定義當例項左側遇到*時的具體行為 class Test: def __init__(self, num): self.num = num def __or__(self, other): print(f"我右邊有一個東西,它是:{other}") def __ror__(self, other): print(f"我左邊有一個東西,它是:{other}") x = Test(100) x | 18000 # 我右邊有一個東西,它是:22 15000 | x # 我左邊有一個東西,它是:33 # 同時,這個Change類,你甚至可以直接當做裝飾器來使用。任何能夠接收兩個引數的函式,都能使用這個裝飾器。 @Change def 加(a,b): return a+b print(2|加|3) # 5