python init方法做了什么_Python類方法、__new__方法和__init__方法分別是什么

Python類方法、__new__方法和__init__方法分別是什么

發布時間:2020-09-03 15:24:06

來源:億速云

閱讀:104

作者:小新

這篇文章主要介紹Python類方法、__new__方法和__init__方法分別是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

在編程語言中創建一個類,有構造方法這樣的一個術語。而在Python中,通常大家都認為__init__是構造方法,其實并不完全等同。在構建類中,有一個特殊的方法__new__,這個才能等同為構造方法。

__new__是一個類方法,我們在定義一個類方法時需要在函數前打上@classmethod裝飾器,而__new__不需要,因為它經過特殊處理。為了理解__new__方法,我們先來看看類方法是什么。

類方法class?MyClass:

@classmethod

def?test(cls):

print(cls.__name__)

MyClass.test()

#輸出?MyClass

在MyClass類中,test方法就是類方法,它傳入第一個參數為cls,其實就是MyClass類,打印cls.__name__可以看到結果。類方法可以直接 類名.方法名()調用。通常類方法是備選構造方法。

類方法的應用>>>?from?datetime?import?datetime

>>>?datetime.fromtimestamp(324234)

datetime.datetime(1970,?1,?5,?2,?3,?54)

如上所示,內置的datetime包中的fromtimestamp就是類方法,可以從多種方式構造出datetime對象。

__new__方法def?__new__(cls,?a):

return?super().__new__(cls)

__new__是類方法,所以第一個參數也是cls,剩下的參數就是構造方法里需要的參數了。通常__new__都不需要定義,在元類編程中才需要,它可以控制類的生成過程。

__new__必須返回一個實例(instance),傳入到__init__方法中的self參數,也就是實例變量。這里返回父類(object)的__new__方法用來創建一個新的實例。相當于obj?=?object.__new__(MyClass)

obj?=?MyClass()

#obj是實例,上面兩個方式等同

其中,MyClass是類,obj是實例(instance)

__init__方法

__new__是構造方法,那么__init__就是初始化函數,它負責將變量綁定到實例中,更新實例的__dict__字典。其中第一個參數self就是__new__的返回值,是類的實例。__new__方法先于__init__方法執行。def?__init__(self,?a):

self.a?=?a

結合使用class?MyClass:

def?__new__(cls,?a):

return?super().__new__(cls)

def?__init__(self,?a):

self.a?=?a

obj?=?MyClass(3)

print(obj.a)

要點

1.__new__是構造方法,__init__是初始化函數。

2.__new__通常不需要手動定義,一般在元類編程中使用,控制類的生成過程。

3.__new__第一個被執行,然后執行__init__綁定實例變量。

4.__new__必須有返回值,返回值是該類的實例,它會被__init__函數接收,通常叫做self變量。

以上是Python類方法、__new__方法和__init__方法分別是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533921.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

谷歌瀏覽器中文版_中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一 / 谷歌發布地圖時光機:百年前,你家街道啥樣?/ AI看圖說話首超人類...

關注我們了解計算機視覺最新動態 !動態先覽1中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一2谷歌發布地圖「時光機」:100年前,你家街道長啥樣?3仿真環境跟車2分鐘,就讓自動駕駛系統撞上馬路牙子&#…

300小時成為java程序員_直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!...

原標題:直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!今天給大家分享一位Java程序員小伙去阿里應聘的經歷!從Java開發要掌握的技術來講,前面已經說得差不多了。我主要想從面試者的角度談一談看法。如果是我面試,就給…

python 判斷每月最后一天_python獲取某年中每個月的第一天和最后一天的兩種方法...

搜索關鍵字:python get every first day of month參考解答:方法一:>>> import calendar>>> calendar.monthrange(2002,1)(1, 31)>>> calendar.monthrange(2008,2)(4, 29)>>> calendar.monthrange(2100,2…

anaconda python3.8目錄_MacBook Pro 安裝anaconda、配置環境

新入手了MacBook Pro,iOS系統還不算非常熟練...作為一個新手程序員,在python開發道路上的學習就從安裝環境開始吧:1、下載安裝包2、安裝過程一路同意or繼續...不過,mac上彈出不允許在當前路徑安裝,那么選擇自定義安裝路…

中國網建java發送短信_短信驗證登陸-中國網建提供的SMS短信平臺

一、JAVA發送手機短信常見的有三種方式(如下所列):使用webservice接口發送手機短信,這個可以使用sina提供的webservice進行發送,但是需要進行注冊使用短信mao的方式進行短信的發送,這種方式應該是比較的常用,前提是需要購買硬件設備。二、一下整理了SMS短信驗證過程…

stm32外部中斷_STM32學習筆記 | 電源管理及低功耗設計要點

一款好的電子產品,都需要認真考慮電源管理的問題,電池供電的產品更應該注意低功耗的實現。 STM32電源介紹嵌入式開發直播課 - STM32 USART串口的應用 - 創客學院直播室?www.makeru.com.cn每一塊STM32芯片中都有一個電源控制器(PWR&#xff0…

delphi 調用瀏覽器內核_HFL:基于混合模糊測試的Linux內核漏洞挖掘

RemarksConference: NDSS 2020Full Paper: HFL: Hybrid Fuzzing on the Linux KernelSummary針對的問題: Linux 操作系統內核安全漏洞的發現需要新技術。現有解決方案的不足:當前的模糊測試技術難以直接應用于內核安全漏洞發現。提出的創新方案概述&…

隔行變色java代碼_jquery入門—選擇器實現隔行變色實例代碼

1、JQuery選擇器繼承了CSS、path語音的部分語法,允許通過標簽名、屬性名、內容對DOM元素進行快速、準確的選擇。2、JQuery選擇器與JavaScript相比,具有代碼簡單、完善的檢測機制的優勢。3、使用JQuery選擇器實現隔行變色,示例代碼如下&#x…

python arduino c_從Python向Arduino LCD發送一個字符串

我想用python在arduinolcd16x2上顯示一個字符串,但是我遇到了串行通信的問題。在以下是Arduino中運行的代碼:Arduino代碼#include LiquidCrystal lcd(8, 9, 4, 5, 6, 7);String stringa;const unsigned long TimeOut 10; // timeout 10 msString string…

如何實現軟件的遠程更新_手機免root終于也能實現遠程控制了 這款國產軟件真是越來越好用...

說到遠程控制,大家或許可以說出好幾個應用軟件出來,比如Teamviewer、Anydesk、向日葵等等。其實,這些軟件我都用過,但Teamviewer現在對個人用戶經常宕機,Anydesk的功能又不夠豐富,只有一個向日葵遠程控制是…

角標越界 Java_【新人求助】利用占位符操作數據庫是總是提示數組角標越界是怎么回事 - Java論壇 - 51CTO技術論壇_中國領先的IT技術社區...

用占位符和數組來操作數據庫總是提示下角標越界,找了半天也沒弄明白哪里有問題,這個地方是跟著云課堂老師的講解做的,只不過操作的數據表不一樣,但是老師那個就沒問題,我就出了問題,如果有大神能幫忙看看&a…

簡述ospf的工作原理_現代數字存儲示波器的工作原理簡述

示波器是一種用途十分廣泛的電子測量儀器。俗話說,電是看不見摸不著的。但是示波器可以幫我們“看見”電信號,便于人們研究各種電現象的變化過程。所以示波器的核心功能,就和他的名字一樣,是顯示電信號波形的儀器,以供…

pyecharts 間距_高月雙色球20108期:紅球首尾間距參考29區段

雙色球第2020108期獎號為:03 09 11 24 25 28 16,紅球和值:100,重號2個:11 28,首尾間距:25。和值:上期和值為100,上升了22點,再次開出小和值,最近…

java類中聲明log對象_用于Android環境,java環境的log打印,可打印任何類型數據

LogXixi用于Android環境,java環境的log打印,可打印任何類型數據,根據android項目環境debug環境自動打開,release環境自動關閉android環境log打印,規范bean對象,json,xml對應log,crash捕捉&#…

xbox手柄接收器驅動_xbox手柄連接 win10電腦

xbox手柄 連接win10筆記本 分為三種連接方式:有線藍牙無線適配器首先說明一下連接方式的特點然后說明連接方式第一種:有線連接 手柄直接通過micro USB數據線和win10電腦連接。這一步最簡單,一般電腦會自動安裝驅動,連接之后可以使…

單片機復位后為什么要對sp重新賦值_51單片機系列之2點亮第一個led小燈

點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led 模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。…

db2與mysql編目_DB2編目、聯邦數據庫 - Goopand's OS Space - OSCHINA - 中文開源技術交流社區...

一、兩個數據庫在不同的服務器上[環境描述]10.0.0.10:庫名為 db_1010.0.0.17:庫名為 db_17[需求描述]在db_17庫中,跨庫查詢db_10庫的表[操作步驟]1)在10.0.0.17數據庫服務器,開啟聯邦支持db2 "update dbm cfg using federate…

關機時無人照管更新正在運行_無法抗拒的未來:無人叉車在內部物流中已成為現實...

自動化和半自動化的叉車不再是新奇的東西,在人力短缺的倉庫中取得了進展。他們最終會成為規范嗎?目前尚不知道全世界有多少輛無人駕駛叉車(也稱為自動叉車、機器人叉車或者AGV)售出。但是叉車生產商都顯示出,它在該領域的迅速增長。重要的是&#xff0c…

打開瀏覽器不是主頁_對于360瀏覽器的一些小小改善

?雖然自己不怎么喜歡,但是以前小編的多數同事都在使用它,所以今天帶來360安全瀏覽器改造的小建議。整理&排版 | idea君 ,預計閱讀 | 4分鐘文章意在學習交流分享,如有侵權請聯系刪除封面:http://www.pexels.com/zh…

c++ 二次開發 良田高拍儀_六枝特良田LYV-850加工中心導軌配套防護罩日常維修

六枝特良田LYV-850加工中心導軌配套防護罩日常維修我廠生產的防護罩質量可與原廠的一樣,同樣的保障,質保期為一年,護罩安裝不合適支持退換貨。尤其是元件連結的接合面剛度,對加工精度影響較大。通常,采用組合夾具時其尺…