1. 程式人生 > >python基礎8之類的實例化過程剖析

python基礎8之類的實例化過程剖析

很難 str 構造方法 foo highlight 一個 images 基礎 class

一、概述

  之前我們說關於python中的類,都一臉懵逼,都想說,類這麽牛逼到底是什麽,什麽才是類?下面我們就來講講,什麽是類?它具有哪些特性。

二、類的語法

2.1 語法

class dog(object):   #用class定義類
    "dog class"     #對類的說明
 
    def __init__(self,name):   #構造函數或者是構造方法,也可以叫初始化方法
        self.name = name
 
 
    def sayhi(self):    #類方法
        "sayhi funcation"    #對類方法的說明
 
        print("hello,i am a dog,my name is ",self.name)
 
 
d = dog("alex")   #定義一個d的對象,叫實例
d.sayhi()    #調用實例的方法

2.2 self關鍵字

有很多小夥伴不禁的疑問,這個self是什麽鬼?為什麽在執行sayhi函數時,上面的self.name可以在函數中被調用?如下圖:

技術分享

其實self 這個關鍵字相當於實例化對象本身(self相當於d),在實例化過程中,把自己傳進去了,我們隊上面的兩行做一下解釋:

技術分享

2.3 函數__init__()

在類中__init__()函數叫構造函數,又叫構造方法,也可以叫初始化函數。它的作用就是初始化實例時,初始化傳入實例的的默認值。如果不寫__init__(),就會調用的默認為空的__init__(),說白了,這個方法不管你寫不寫,都會調用,而且,一旦實例化就會調用。

class dog(object):
    "dog class"
 
    def __init__(self,name):  #構造方法,不寫調用默認的構造方法
        self.name = name 
 
    def eat(self,food):
        print("the dog name is {0},it like food is {1}".format(self.name,food))
 
d = dog("alex")
d.eat("hotdog")
#輸出
the dog name is alex,it like food is hotdog

三、總結

  最後我們畫一個圖,來說明一下實話過程的圖,不然真的很難理解這個玩意:

技術分享

由上圖可知:其實self,就是實例本身!你實例化時python會自動把這個實例本身通過self參數傳進去

python基礎8之類的實例化過程剖析