欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中__init__的用法和理解示例詳解

 更新時(shí)間:2023年02月10日 11:10:30   作者:luzhan66  
在Python中定義類經(jīng)常會(huì)用到__init__函數(shù)(方法),首先需要理解的是,兩個(gè)下劃線開頭的函數(shù)是聲明該屬性為私有,不能在類的外部被使用或訪問,從文字理解比較困難,下面通過示例代碼幫助大家理解__init__在python中用法,感興趣的朋友一起看看吧

Python中__init__的用法和理解

在Python中定義類經(jīng)常會(huì)用到__init__函數(shù)(方法),首先需要理解的是,兩個(gè)下劃線開頭的函數(shù)是聲明該屬性為私有,不能在類的外部被使用或訪問。而__init__函數(shù)(方法)支持帶參數(shù)類的初始化,也可為聲明該類的屬性(類中的變量)。__init__函數(shù)(方法)的第一個(gè)參數(shù)必須為self,后續(xù)參數(shù)為自己定義。

從文字理解比較困難,通過下面的例子能非常容易理解這個(gè)概念:

例如我們定義一個(gè)Box類,有width, height, depth三個(gè)屬性,以及計(jì)算體積的方法:

#!/usr/bin/python
# -*- coding utf-8 -*-
#Created by Lu Zhan
 
class Box:
    def setDimension(self, width, height, depth):
        self.width = width
        self.height = height
        self.depth = depth
 
    def getVolume(self):
        return self.width * self.height * self.depth
 
b = Box()
b.setDimension(10, 20, 30)
print(b.getVolume())

我們?cè)贐ox類中定義了setDimension方法去設(shè)定該Box的屬性,這樣過于繁瑣,而用__init__()這個(gè)特殊的方法就可以方便地自己對(duì)類的屬性進(jìn)行定義,__init__()方法又被稱為構(gòu)造器(constructor)。

#!/usr/bin/python
# -*- coding utf-8 -*-
#Created by Lu Zhan
 
class Box:
    #def setDimension(self, width, height, depth):
    #   self.width = width
    #   self.height = height
    #   self.depth = depth
    def __init__(self, width, height, depth):
        self.width = width
        self.height = height
        self.depth = depth
 
    def getVolume(self):
        return self.width * self.height * self.depth
 
b = Box(10, 20, 30)
print(b.getVolume())

補(bǔ)充:Python __init__()類構(gòu)造方法

在創(chuàng)建類時(shí),我們可以手動(dòng)添加一個(gè) __init__() 方法,該方法是一個(gè)特殊的類實(shí)例方法,稱為構(gòu)造方法(或構(gòu)造函數(shù))。

構(gòu)造方法用于創(chuàng)建對(duì)象時(shí)使用,每當(dāng)創(chuàng)建一個(gè)類的實(shí)例對(duì)象時(shí),Python 解釋器都會(huì)自動(dòng)調(diào)用它。Python 類中,手動(dòng)添加構(gòu)造方法的語法格式如下:

def __init__(self,...):
? ? 代碼塊

注意,此方法的方法名中,開頭和結(jié)尾各有 2 個(gè)下劃線,且中間不能有空格。Python 中很多這種以雙下劃線開頭、雙下劃線結(jié)尾的方法,都具有特殊的意義,后續(xù)會(huì)一一為大家講解。

另外,__init__() 方法可以包含多個(gè)參數(shù),但必須包含一個(gè)名為 self 的參數(shù),且必須作為第一個(gè)參數(shù)。也就是說,類的構(gòu)造方法最少也要有一個(gè) self 參數(shù)。例如,仍以 TheFirstDemo 類為例,添加構(gòu)造方法的代碼如下所示:

class TheFirstDemo:
? ? '''這是一個(gè)學(xué)習(xí)Python定義的第一個(gè)類'''
? ? #構(gòu)造方法
? ? def __init__(self):
? ? ? ? print("調(diào)用構(gòu)造方法")
? ? # 下面定義了一個(gè)類屬性
? ? add = 'http://c.biancheng.net'
? ? # 下面定義了一個(gè)say方法
? ? def say(self, content):
? ? ? ? print(content)

注意,即便不手動(dòng)為類添加任何構(gòu)造方法,Python 也會(huì)自動(dòng)為類添加一個(gè)僅包含 self 參數(shù)的構(gòu)造方法。

僅包含 self 參數(shù)的 __init__() 構(gòu)造方法,又稱為類的默認(rèn)構(gòu)造方法。

在上面代碼的后面,頂頭(不縮進(jìn))直接添加如下代碼:

zhangsan = TheFirstDemo()

這行代碼的含義是創(chuàng)建一個(gè)名為 zhangsan 的 TheFirstDemo 類對(duì)象。運(yùn)行代碼可看到如下結(jié)果:

調(diào)用構(gòu)造方法

顯然,在創(chuàng)建 zhangsan 這個(gè)對(duì)象時(shí),隱式調(diào)用了我們手動(dòng)創(chuàng)建的 __init__() 構(gòu)造方法。

不僅如此,在 __init__() 構(gòu)造方法中,除了 self 參數(shù)外,還可以自定義一些參數(shù),參數(shù)之間使用逗號(hào)“,”進(jìn)行分割。例如,下面的代碼在創(chuàng)建 __init__() 方法時(shí),額外指定了 2 個(gè)參數(shù):

class CLanguage:
? ? '''這是一個(gè)學(xué)習(xí)Python定義的一個(gè)類'''
? ? def __init__(self,name,add):
? ? ? ? print(name,"的網(wǎng)址為:",add)
#創(chuàng)建 add 對(duì)象,并傳遞參數(shù)給構(gòu)造函數(shù)
add = CLanguage("腳本之家","http://www.dbjr.com.cn")

注意,由于創(chuàng)建對(duì)象時(shí)會(huì)調(diào)用類的構(gòu)造方法,如果構(gòu)造函數(shù)有多個(gè)參數(shù)時(shí),需要手動(dòng)傳遞參數(shù),傳遞方式如代碼中所示(后續(xù)章節(jié)會(huì)做詳細(xì)講解)。

運(yùn)行以上代碼,執(zhí)行結(jié)果為:
腳本之家 的網(wǎng)址為: //www.dbjr.com.cn

可以看到,雖然構(gòu)造方法中有 self、name、add 3 個(gè)參數(shù),但實(shí)際需要傳參的僅有 name 和 add,也就是說,self 不需要手動(dòng)傳遞參數(shù)。

關(guān)于 self 參數(shù),后續(xù)章節(jié)會(huì)做詳細(xì)介紹,這里只需要知道,在創(chuàng)建類對(duì)象時(shí),無需給 self 傳參即可。

到此這篇關(guān)于Python中__init__的用法和理解的文章就介紹到這了,更多相關(guān)__init__在python中用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python對(duì)文件目錄的操作方法實(shí)例總結(jié)

    python對(duì)文件目錄的操作方法實(shí)例總結(jié)

    這篇文章主要介紹了python對(duì)文件目錄的操作方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)文件目錄相關(guān)的遍歷、刪除、移動(dòng)、查找等操作技巧,需要的朋友可以參考下
    2019-06-06
  • Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解

    Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解

    這篇文章主要為大家介紹了Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • python 使用遞歸的方式實(shí)現(xiàn)語義圖片分割功能

    python 使用遞歸的方式實(shí)現(xiàn)語義圖片分割功能

    這篇文章主要介紹了python 使用遞歸的方式實(shí)現(xiàn)語義圖片分割,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 寶塔面板成功部署Django項(xiàng)目流程(圖文)

    寶塔面板成功部署Django項(xiàng)目流程(圖文)

    這篇文章主要介紹了寶塔面板成功部署Django項(xiàng)目流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python學(xué)習(xí)之元組的使用詳解

    Python學(xué)習(xí)之元組的使用詳解

    Python元組和列表很像,也是一個(gè)包含多個(gè)元素的集合,本文主要給大家介紹了關(guān)于Python中元組(Tuple)的使用,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Python線性回歸實(shí)戰(zhàn)分析

    Python線性回歸實(shí)戰(zhàn)分析

    這篇文章主要介紹了Python線性回歸實(shí)戰(zhàn)分析以及代碼講解,對(duì)此有興趣的朋友學(xué)習(xí)下吧。
    2018-02-02
  • 在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程

    在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程

    這篇文章主要介紹了在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程,本文選擇以flask框架作為示例,需要的朋友可以參考下
    2015-05-05
  • Matplotlib中文亂碼的3種解決方案

    Matplotlib中文亂碼的3種解決方案

    當(dāng)我們用matplotlib作圖時(shí),往往會(huì)發(fā)現(xiàn)中文的文字變成了小方塊,我在繪制決策樹的時(shí)候就碰到了這個(gè)問題。下面這篇文章主要給大家總結(jié)介紹了關(guān)于Matplotlib中文亂碼的3種解決方案,需要的朋友可以參考下
    2018-11-11
  • 如何在Flask中實(shí)現(xiàn)數(shù)據(jù)分組流程詳解

    如何在Flask中實(shí)現(xiàn)數(shù)據(jù)分組流程詳解

    在Flask中,數(shù)據(jù)分組是指將一組數(shù)據(jù)按照某種方式進(jìn)行分類,以便更好地對(duì)數(shù)據(jù)進(jìn)行處理和展示,可以使用Python內(nèi)置的itertools模塊中的groupby方法,或者使用SQL語句中的GROUP?BY子句來實(shí)現(xiàn)數(shù)據(jù)分組,這篇文章介紹了在Flask中實(shí)現(xiàn)數(shù)據(jù)分組,感興趣的同學(xué)可以參考下文
    2023-05-05
  • 五分鐘學(xué)會(huì)Python 模塊和包、文件

    五分鐘學(xué)會(huì)Python 模塊和包、文件

    通過學(xué)習(xí)本文可以五分鐘掌握Python 模塊和包、文件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論