Python面向?qū)ο缶幊讨惖倪\(yùn)算
1、運(yùn)算概念的理解
運(yùn)算(Operation)是操作邏輯的抽象
- 運(yùn)算體現(xiàn)一種操作邏輯,在廣義角度來說任何程序都是一種運(yùn)算
Python解釋器通過保留方法預(yù)留了一批運(yùn)算的接口,需要重載- 保留方法一般對應(yīng)運(yùn)算符,
Python中運(yùn)算體現(xiàn)為運(yùn)算符的重載 - 運(yùn)算本質(zhì)上體現(xiàn)了交互關(guān)系、包含關(guān)系和常規(guī)的操作關(guān)系
運(yùn)算重載的限制
- 不能重載
Python語言內(nèi)置類型的運(yùn)算符 - 不能新建運(yùn)算符,只能通過重載完成
is,and,not,or不能被重載
2、運(yùn)算符的重載
2.1 算術(shù)運(yùn)算符
一元運(yùn)算符:+、-、~
二元運(yùn)算符:+、-、*、/、//、%、divmod() 、 pow() 、**、<<、>>、&、^、|
| 保留方法 | 對應(yīng)操作 | 描述 |
|---|---|---|
| .__neg__(self) | -obj | 定義對象取負(fù)的運(yùn)算邏輯 |
| .__pos__(self) | +obj | 定義對象取正的運(yùn)算邏輯 |
| .__abs__(self) | abs(obj) | 定義對象絕對值的運(yùn)算邏輯 |
| .__invert__(self) | ~obj | 定義對象取反的運(yùn)算邏輯 |
| .__add__(self, other) | obj + other | 定義了兩個對象加法的運(yùn)算邏輯 |
| .__sub__(self, other) | obj - other | 定義了兩個對象減法的運(yùn)算邏輯 |
| .__mul__(self, other) | obj * other | 定義了兩個對象乘法的運(yùn)算邏輯 |
| .__truediv__(self, other) | obj / other | 定義了兩個對象除法的運(yùn)算邏輯 |
| .__floordiv__(self, other) | obj // other | 定義了兩個對象整數(shù)除的運(yùn)算邏輯 |
| .__mod__(self, other) | obj % other | 定義了兩個對象模的運(yùn)算邏輯 |
| .__divmod__(self, other) | divmod(obj, other) | 定義了兩個對象除模的運(yùn)算邏輯 |
| .__pow__(self, other) | obj ** other | 定義對象冪的運(yùn)算邏輯 |
| .__lshift__(self, other) | obj << other | 定義對象左移的運(yùn)算邏輯 |
| .__rshift__(self, other) | obj >> other | 定義對象右移的運(yùn)算邏輯 |
| .__and__(self, other) | obj & other | 定義兩個對象位于運(yùn)算邏輯 |
| .__xor__(self, other) | obj ^ other | 定義兩個對象位異或的運(yùn)算邏輯 |
| .__or__(self, other) | `obj | other` |
2.2 比較運(yùn)算符
比較運(yùn)算符:<、<=、==、!=、>、>=
| 保留方法 | 對應(yīng)操作 |
|---|---|
| .__lt__(self, other) | obj < other |
| .__le__(self, other) | obj <= other |
| .__eq__(self, other) | obj == other |
| .__be__(self, other) | obj != other |
| .__gt__(self, other) | obj > other |
| .__ge__(self, other) | obj >= other |
兩個對象比較操作的運(yùn)算重載
2.3 成員運(yùn)算
成員獲?。?/strong>[]、def、 .eversed()成員判斷:
in
| 保留方法 | 對應(yīng)操作 | 描述 |
|---|---|---|
| .__getitem__(self, key) | obj[k] | 定義獲取對象中序號K元素的運(yùn)算邏輯,K為整數(shù) |
| .__setitem__(self, key, v) | obj[k] = v | 定義賦值對象中序號K元素的運(yùn)算邏輯 |
| .__delitem__(self, key) | del obj[k] | 定義刪除對象中序號K元素的運(yùn)算邏輯 |
| .__reversed__(self) | obj.reversed() | 定義對象逆序的運(yùn)算邏輯 |
| .__contains__(self, item) | item in obj | 定義in操作符對應(yīng)的運(yùn)算邏輯 |
2.4 其他運(yùn)算
Python內(nèi)置函數(shù):rep(),str(),len(),int(),flaot,complex(),round(),bytes(),bool(),format(),.format(常用方法)
| 保留方法 | 對應(yīng)操作 | 描述 |
|---|---|---|
| __repr__(self) | repr(obj) | 定義對象可打印字符串的運(yùn)算邏輯 |
| __str__(self) | str(obj) | 定義對象字符串轉(zhuǎn)換的運(yùn)算邏輯 |
| __len__(self) | len(obj) | 定義對象長度操作的運(yùn)算邏輯 |
| __int__(self) | int(obj) | 定義對象整數(shù)轉(zhuǎn)換的運(yùn)算邏輯 |
| __float__(self) | float(obj) | 定義對象浮點(diǎn)數(shù)轉(zhuǎn)換的運(yùn)算邏輯 |
| __complex__(self) | complex(obj) | 定義對象復(fù)數(shù)轉(zhuǎn)換的運(yùn)算邏輯 |
| __round__(self) | round(obj) | 定義對象四舍五入的運(yùn)算邏輯 |
| __bytes__(self) | bytes(obj) | 定義對象字節(jié)串轉(zhuǎn)換的運(yùn)算邏輯 |
| __bool__(self) | bool(obj) | 定義對象布爾運(yùn)算的運(yùn)算邏輯 |
| .__format__(self, format_spec) | obj.format() format(obj) | 定義對象格式化輸出的運(yùn)算邏輯 |
3、Python類的多態(tài)
多態(tài) _(Polymorphism)_是針對方法,體現(xiàn)方法靈活性的多態(tài);簡單的說,他包含兩部分
參數(shù)類型的多態(tài):一個方法能夠處理多個類型的能力
Python的函數(shù)/方法沒有類型聲明限制,天然支持參數(shù)類型的多態(tài)性
Python編程理念在于:文檔約束,而非語法約束
對不同參數(shù)類型的區(qū)分以及功能,需要有程序員完成
參數(shù)形式的多態(tài):一個方法能夠接受多個參數(shù)的能力
Python的函數(shù)/方法可以支持可變參數(shù),支持參數(shù)形式的多態(tài)性
Python的類方法也是函數(shù),函數(shù)的各種定義方式均有效
對不同參數(shù)個數(shù)以及默認(rèn)值的確定,需要由程序員完成
多態(tài)是OOP的一個傳統(tǒng)概念,Python天然支持多態(tài),不需要特殊語法,示例代碼如下所示:
import abc
class Animal(metaclass=abc.ABCMeta): #同一類事物:動物
@abc.abstractmethod
def talk(self):
pass
class Cat(Animal): #動物的形態(tài)之一:貓
def talk(self):
print('say miaomiao')
class Dog(Animal): #動物的形態(tài)之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): #動物的形態(tài)之三:豬
def talk(self):
print('say aoao')
到此這篇關(guān)于Python面向?qū)ο缶幊讨惖倪\(yùn)算的文章就介紹到這了,更多相關(guān)Python類的運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python的EasyGUI學(xué)習(xí)實(shí)踐
這篇文章主要介紹了基于Python的EasyGUI學(xué)習(xí)實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Pytorch如何指定device(cuda or cpu)
這篇文章主要介紹了Pytorch如何指定device(cuda or cpu)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
python 基于selenium實(shí)現(xiàn)鼠標(biāo)拖拽功能
這篇文章主要介紹了python 基于selenium實(shí)現(xiàn)鼠標(biāo)拖拽功能的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12
如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序
在Python中,將代碼轉(zhuǎn)成可以執(zhí)行的程序需要安裝庫pyinstaller,如果是Windows用戶,打開Anaconda?Prompt輸入相對應(yīng)代碼,下面小編給大家詳細(xì)講解如何將Python代碼轉(zhuǎn)化為可執(zhí)行的程序,感興趣的朋友一起看看吧2024-03-03
pyqt QPlainTextEdit 中捕獲回車的示例代碼
在PyQt的QPlainTextEdit控件中,可以通過重寫keyPressEvent()函數(shù)來捕獲鍵盤事件,這篇文章主要介紹了pyqt QPlainTextEdit 中捕獲回車,需要的朋友可以參考下2024-03-03
詳解Python中生成隨機(jī)數(shù)據(jù)的示例詳解
在日常工作編程中存在著各種隨機(jī)事件,同樣在編程中生成隨機(jī)數(shù)字的時候也是一樣。每當(dāng)在?Python?中生成隨機(jī)數(shù)據(jù)、字符串或數(shù)字時,最好至少大致了解這些數(shù)據(jù)是如何生成的。所以本文將詳細(xì)為大家講解一下Python是如何生成隨機(jī)數(shù)據(jù),需要的可以參考一下2022-04-04
Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式
這篇文章主要介紹了Pytorch 使用opnecv讀入圖像由HWC轉(zhuǎn)為BCHW格式方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

