日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python筆記——__init__方法與self詳解

系統 2490 0

前后都加雙下劃綫的方法在python中是獨一無二的,加下劃線的目的在于避免與普通方法名稱沖突。
本文中主要深入理解在定義類的時候必須用到的__init__方法。
在進行詳細敘述之前,給大家普及一下,類中的方法和屬性。

  • 方法:也就是各類中定義的函數,比如我們定義一個車的類,描述車的函數就是一個方法。
  • 屬性:車的品牌、型號、生產日期等信息就是它的屬性

1、__init__方法:無需直接調用,生成實例對象的時候自動調用。


“init”的全稱是“initialize”,也就是初始化的意思,所以__init__又稱構造方法。

在定義類的時候__init__()方法是必不可少的。
init()這種初始化方法,用來初始化新創建對象的屬性,在一個對象被創建以后會立即調用,比如像實例化一個類:

demo

            
              
                class
              
              
                Car
              
              
                (
              
              
                )
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
              make
              
                ,
              
              model
              
                ,
              
              year
              
                )
              
              
                :
              
              
                ###
              
              
        self
              
                .
              
              make 
              
                =
              
               make
        self
              
                .
              
              model 
              
                =
              
               model
        self
              
                .
              
              year 
              
                =
              
               year 
my_car 
              
                =
              
               Car
              
                (
              
              
                'aodi'
              
              
                ,
              
              
                'A4'
              
              
                ,
              
              
                '2010'
              
              
                )
              
              
                print
              
              
                (
              
              my_car
              
                .
              
              model
              
                )
              
            
          
            
              aodi

            
          

程序中沒有直接調用__init__方法,但make,model,year等屬性通過Car()類自動調用了__init__方法,生成了屬性。

2、self參數


“self”的英文意思很明顯,是自己的意思。

這里自己隱含的含義是

  1. 指的是,實例Instance本身。

  2. 同時, 由于說到“自己”這個詞,都是和相對而言的“其他”而說的;而此處的其他,指的是,類Class,和其他變量,比如局部變量,全局變量等。
    此處的self,是個對象(Object),是當前類的實例。
    因此,對應的self.valueName 和 self.function()中的valueName:表示self對象,即實例的變量。與其他的,Class的變量,全局的變量,局部的變量,是相對應的。
    function:表示是調用的是self對象,即實例的函數。與其他的全局的函數,是相對應的。

因為Python已經規定:函數的第一個參數,就必須是實例對象本身,并且約定俗成,把其名字寫為self。因此我們再定義類中的所有函數時必須傳入self參數。

demo

            
              
                class
              
              
                Car
              
              
                (
              
              
                )
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
              make
              
                ,
              
              model
              
                ,
              
              year
              
                )
              
              
                :
              
              
                ###
              
              
        self
              
                .
              
              make 
              
                =
              
               make
        self
              
                .
              
              model 
              
                =
              
               model
        self
              
                .
              
              year 
              
                =
              
               year 
    
              
                def
              
              
                get_descriptive_name
              
              
                (
              
              self
              
                )
              
              
                :
              
              
        long_name 
              
                =
              
               self
              
                .
              
              year
              
                +
              
              
                ' '
              
              
                +
              
              self
              
                .
              
              make
              
                +
              
              
                " "
              
              
                +
              
              self
              
                .
              
              model
        
              
                print
              
              
                (
              
              self
              
                )
              
              
                ###看下self指向哪里
              
              
                print
              
              
                (
              
              
                type
              
              
                (
              
              self
              
                )
              
              
                )
              
              
                ###看下self類型是什么
              
              
                return
              
               long_name
my_car 
              
                =
              
               Car
              
                (
              
              
                'aodi'
              
              
                ,
              
              
                'A4'
              
              
                ,
              
              
                '2010'
              
              
                )
              
              
my_car
              
                .
              
              get_descriptive_name
              
                (
              
              
                )
              
            
          

輸出內容:

            
              
                <
              
              __main__
              
                .
              
              Car 
              
                object
              
               at 
              
                0x000001D31F7408D0
              
              
                >
              
              
                ##可以看出self指向的是一個對象,也就是我們用my_car的實例對象 == self
              
              
                <
              
              
                class
              
              
                '__main__.Car'
              
              
                >
              
              
                ## self的類型是Car類的實例對象
              
              
                '2010 aodi A4'
              
            
          

參考文獻:https://www.cnblogs.com/ant-colonies/p/6718388.html


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 正镶白旗| 图木舒克市| 绥阳县| 麟游县| 东山县| 永安市| 洛隆县| 吉安市| 黑龙江省| 东乡| 射洪县| 莱芜市| 延长县| 盐源县| 贡觉县| 德清县| 安顺市| 昌图县| 文昌市| 弥勒县| 扎赉特旗| 玉山县| 长武县| 轮台县| 绍兴县| 龙口市| 新乡县| 宜良县| 黔东| 沛县| 凤阳县| 寻甸| 泾源县| 镇雄县| 西畴县| 哈尔滨市| 桐乡市| 亚东县| 集贤县| 汉中市| 望奎县|