python魔方函數 python魔術方法的意義

Python魔法函數(特殊函數)

Python中如何實現運算符的重載,即實現例如a+b這樣的運算符操作呢?

目前累計服務客戶超過千家,積累了豐富的產品開發及服務經驗。以網站設計水平和技術實力,樹立企業形象,為客戶提供網站設計、成都做網站、網站策劃、網頁設計、網絡營銷、VI設計、網站改版、漏洞修補等服務。創新互聯公司始終以務實、誠信為根本,不斷創新和提高建站品質,通過對領先技術的掌握、對創意設計的研究、對客戶形象的視覺傳遞、對應用系統的結合,為客戶提供更好的一站式互聯網解決方案,攜手廣大客戶,共同發展進步。

在C++中可以使用 operator 關鍵字實現運算符的重載。但是在Python中沒有類似這樣的關鍵字,所以要實現運算符的重載,就要用到Python的魔法函數。Python魔法函數是以雙下劃線開頭,雙下劃線結尾的一組函數。我們在類定義中最常用到的 __init__ 函數就是這樣一個魔法函數,它在創建類對象時被自動調用。

下面我們來看個簡單的例子。

上述代碼示例了幾個魔法函數的用法。 __add__ 函數對應了二元運算符+,當執行a+b語句時,python就會自動調用a. add (b)。 對于上述例子中的v1+v2+v3,則相當于調用了(v1. add(v2)). add(v3)。

代碼中還有一個在Python類定義經常使用的 __str__ 函數,當使用 str() 時會被調用。print函數對傳入的參數都調用了str()將其轉換成易讀的字符串形式,便于打印輸出,因而會調用類定義的__str__函數打出自定義的字符串。

代碼中還有一個特殊的 __call__ 函數,該函數在將對象采用函數調用方式使用時被調用, 例如v1()相當于v1. call ()。

以上就是魔法函數的基本使用方法。常見的魔法函數我們可以使用 dir() 函數來查看。

輸出結果為:

上述結果中形式為‘__函數名__’的函數為魔法函數,注意有些對象也是這種形式,例如__class__, __module__等, 這些不是魔法函數。具體的魔法函數說明可以參考Python官方說明文檔。

以上代碼在Python3.6運行通過.

Python 寫一個方程magic_square(input_file)

def magic_square(input_file):

import xlrd

data=xlrd.open_workbook(input_file)

sheet1=data.sheet_by_index(0)

i=0

result=[]

diag1=0

diag2=0

while i4:

row=sheet1.row_values(i)

col=sheet1.col_values(i)

add1=0

add2=0

for ele in range(0,len(row)):

add1=add1+row[ele]

add2=add2+row[ele]

result.append(add1)

result.append(add2)

diag1=diag1+row[i]

diag2=diag2+row[3-i]

i=i+1

result.append(diag1)

result.append(diag2)

result=set(result)

if len(result)1:

print('False')

else:

print('True')

注意格式,看下面這個圖

python魔法方法是什么

魔方方法是Python的內置方法,無需主動調用,主要目的就是為了給Python的解釋器進行調用,而且每個魔方方法都有一個對應的內置函數或運算符,接下來我們來看看具體的介紹。

魔法方法就是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了這些方法中的某一個, 那么這個方法就會在特殊的情況下被Python所調用,你可以定義自己想要的行為,而這一切都是自動發 生的,它們經常是兩個下劃線包圍來命名的(比如 __init___ , __len__ ),Python的魔法方法是非常強大的所以了解其使用方法也變得尤為重要!

__init__ 構造器,當一個實例被創建的時候初始化的方法,但是它并不是實例化調用的第一個方法。

__new__ 才是實例化對象調用的第一個方法,它只取下cls參數,并把其他參數傳給 __init___。

___new__ 很少使用,但是也有它適合的場景,尤其是當類繼承自一個像元祖或者字符串這樣不經常改變的類型的時候。

__call__ 讓一個類的實例像函數一樣被調用。

__getitem__ 定義獲取容器中指定元素的行為,相當于self[key]。

__getattr__ 定義當用戶試圖訪問一個不存在屬性的時候的行為。

__setattr__ 定義當一個屬性被設置的時候的行為。

__getattribute___ 定義當一個屬性被訪問的時候的行為。

當前名稱:python魔方函數 python魔術方法的意義
文章路徑:http://m.kartarina.com/article28/dogesjp.html

成都網站建設公司_創新互聯,為您提供微信小程序搜索引擎優化網站營銷網站改版定制開發面包屑導航

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 成年午夜无码av片在线观看| 国模无码人体一区二区| 亚洲日产无码中文字幕| 精选观看中文字幕高清无码| 无码国内精品久久人妻| 亚洲av永久无码精品三区在线4| 亚洲日韩精品无码专区加勒比☆| 人妻丰满?V无码久久不卡| 亚洲熟妇无码久久精品| 亚洲AV无码乱码精品国产| 精品亚洲AV无码一区二区| 免费看无码特级毛片| 中文字幕无码日韩欧毛| 亚洲国产精品无码AAA片| 人妻无码久久中文字幕专区| 久久久久亚洲AV无码网站| 久久久久久国产精品无码下载| 伊人天堂av无码av日韩av| 亚洲va无码va在线va天堂| 人妻丝袜无码专区视频网站| 无码区日韩特区永久免费系列| 中文无码成人免费视频在线观看| 久久久g0g0午夜无码精品 | 久久精品亚洲中文字幕无码网站| 天堂一区人妻无码| 亚洲成av人无码亚洲成av人 | 国产a级理论片无码老男人| 西西444www无码大胆| 久久国产亚洲精品无码| 亚洲大尺度无码无码专区| 内射人妻少妇无码一本一道| 秋霞鲁丝片无码av| 人妻丰满熟妇A v无码区不卡| 东京热HEYZO无码专区| 国产成人无码免费视频97 | 国模无码人体一区二区| 亚洲av无码乱码在线观看野外| 国产色无码精品视频国产| 国产一区二区三区无码免费| 成人年无码AV片在线观看| 无码丰满熟妇浪潮一区二区AV|