最近的類看著很疼,堅持就是勝利~~~ python中的類,什麼是類?類是由屬性和方法組成的。類中可能有很多屬性,以及方法。 我們這樣定義一個類: 前面是class關鍵字 後面school是一個類的名字,在後面就是圓括弧和括弧裡面的object關鍵字,它是跟類,所有的類繼承它。最後記住冒號結尾。 創建 ...
最近的類看著很疼,堅持就是勝利~~~
python中的類,什麼是類?類是由屬性和方法組成的。類中可能有很多屬性,以及方法。
我們這樣定義一個類:
前面是class關鍵字 後面school是一個類的名字,在後面就是圓括弧和括弧裡面的object關鍵字,它是跟類,所有的類繼承它。最後記住冒號結尾。
1 class school (object): # object就是根類,在python3中要這樣寫的固有格式吧,不在深入研究它
創建好類後,類的內部代碼塊,會有類的屬性和類的方法,因為類是由類的屬性和方法組成的。在調用某個類的屬性或方法前,我們需要先進行類的實例化對象。實例化對象的意思是:將類具體指向一個對象。比如:人,就是一個類,大千世界有很多人,所以叫人類,哈哈~~~大千世界這麼多人,我們每個人都是一個單獨的個體,所以我們單獨的某個人就是一個實例化對象,就是這個意思。
1 class school(object): # object就是根類 2 pass #類中的方法和屬性我們先省略 3 4 schoo_1 = school() #為類實例化第一個對象,第一個類對象叫做:schoo_1 5 schoo_2 = school() #為類實例化第二個對象
我不知道在看筆記的你是不是懂我表達的意思,如果不理解可以評論哦~~~我會根據你的不理解,在調整我的描述筆記。希望可以幫助大家輕鬆的學習。
剛剛看到我們為school這個類,實例化了兩個對象,分別是school_1 和 school_2 也就是說大千世界人很多,我們可以為類實例化多個對象,根據名字不同,來區分是那個個體類對象。接下來我們看看兩個類在記憶體中的存儲位置是不是不一樣的,說明他們確實不是同一個對象。
1 class school(object): 2 pass #類中的方法和屬性我們先省略 3 4 schoo_1 = school() #為類實例化第一個對象 5 schoo_2 = school() 6 7 print(id(schoo_1)) #我們列印每個個體類在記憶體中的位置 8 print(id(schoo_2))
看到它們兩個id在記憶體中占有的不同位置了吧!
我們再看下什麼是【類的屬性】:聲明在類型的內部,方法(def)的外部。就是類屬性,比如下麵代碼中的 gongtong 就是person類的類屬性。
1 class person(object): 2 # 類屬性 3 '''#類屬性代表:都是人,但是我們都有一個共同的點,把這些共同的功能區分出來,他們就是類屬性。''' 4 gontong = '每天都要吃飯' 5 6 def __init__(self,name,age): #構造函數
7 #實例屬性 8 self.name=name 9 self.age=age
那麼我們再看下,類中都帶有的一個特殊的函數:
def __init__(self): 這個函數的作用是:初始化實例屬性的值.這些值一般要供其他方法調用。我們看到下麵代碼中,構造函數裡面有兩個參數name和age。
self.name=name,就是將傳入的值,進行了初始化的過程。
1 class person(object): 2 # 類屬性 3 4 gontong = '每天都要吃飯' 5 6 def __init__(self,name,age): #構造函數,類在進行調用的時候,參數都會進行初始化,即使不需要也會進行。 7 #實例屬性 8 self.name=name #初始化實例屬性name參數 9 self.age=age #初始化實例屬性age參數
接下來我們看下person類中的其他方法:
1 class person(object): 2 # 類屬性 3 '''#類屬性代表:都是人,但是我們都有一個共同的點,把這些共同的功能區分出來,他們就是類屬性。''' 4 gontong = '每天都要吃飯' 5 6 def __init__(self,name,age): #構造函數,類在進行調用的時候,參數都會進行初始化,即使不需要也會進行。 7 #實例屬性 8 self.name=name #初始化實例屬性name參數 9 self.age=age #初始化實例屬性age參數 10 11 def getname(self): #該函數用於獲取name的值 12 return self.name #將name參數的值,返回給函數調用方 13 def getage(self): 14 return self.age #將age參數的值,返回給函數調用方 15 16 def setname(self,name): #對name參數重新賦值 17 self.name=name 18 19 def setage(self,age): #對age參數重新賦值 20 self.age=age 21 22 def info(self): 23 return 'name:{0},age:{1},gongtong:{2}'.format(self.getname(),self.getage(),self.gontong) 24 25 per_1 = person('liu','25') #實例化類,調用類中的屬性和方法,需要先進行類實例化對象 26 print(per_1.getname(),per_1.getage()) #類的實例化對象per_1調用函數getname(),來獲取name參數的值;類的實例化對象per_1調用函數getage(),來獲取name參數的值。
在上面的per_1實例化對象,對類傳入了兩個參數 'liu' , '25' ,這是調用類的第一步,先對類進行實例化對象,然後對類傳入參數。
最後一行代碼是列印出,實例化對象調用類中的兩個函數,用兩個函數的方法獲取到了名字name和年齡age。
接下來我們再看下調用另外兩個函數的作用:
1 class person(object): 2 # 類屬性 3 '''#類屬性代表:都是人,但是我們都有一個共同的點,把這些共同的功能區分出來,他們就是類屬性。''' 4 gontong = '每天都要吃飯' 5 6 def __init__(self,name,age): #構造函數,類在進行調用的時候,參數都會進行初始化,即使不需要也會進行。 7 #實例屬性 8 self.name=name #初始化實例屬性name參數 9 self.age=age #初始化實例屬性age參數 10 11 def getname(self): #該函數用於獲取name的值 12 return self.name #將name參數的值,返回給函數調用方 13 def getage(self): 14 return self.age #將age參數的值,返回給函數調用方 15 16 def setname(self,name): #對name參數重新賦值 17 self.name=name 18 19 def setage(self,age): #對age參數重新賦值 20 self.age=age 21 22 def info(self): #獲取類屬性和其他類的方法 23 return 'name:{0},age:{1},gongtong:{2}'.format(self.getname(),self.getage(),self.gontong) 24 25 per_2 = person('xiao',66) #實例化類,調用類中的屬性和方法,需要先進行類實例化對象 26 print(per_2.getname(),per_2.getage()) #類的實例化對象per_1調用函數getname(),來獲取name參數的值;類的實例化對象per_1調用函數getage(),來獲取name參數的值。 27 per_2.setname('xiaohong'),per_2.setage('12') #調用類中的setname()函數,對name重新賦值;#調用類中的setage()函數,對age重新賦值 28 print(per_2.getname(),per_2.getage()) #再次列印,看重新賦值成功沒有 29 print(per_2.info()) #類的實例化對象per_2,調用類的info()方法,獲取類屬性和其他方法
今天就先到這裡,筆記有點多,一天進步一點,加油~
源代碼:
1 class person(object): 2 # 類屬性 3 '''#類屬性代表:都是人,但是我們都有一個共同的點,把這些共同的功能區分出來,他們就是類屬性。''' 4 gontong = '每天都要吃飯' 5 6 def __init__(self,name,age): #構造函數,類在進行調用的時候,參數都會進行初始化,即使不需要也會進行。 7 #實例屬性 8 self.name=name #初始化實例屬性name參數 9 self.age=age #初始化實例屬性age參數 10 11 def getname(self): #該函數用於獲取name的值 12 return self.name #將name參數的值,返回給函數調用方 13 def getage(self): 14 return self.age #將age參數的值,返回給函數調用方 15 16 def setname(self,name): #對name參數重新賦值 17 self.name=name 18 19 def setage(self,age): #對age參數重新賦值 20 self.age=age 21 22 def info(self): #獲取類屬性和其他類的方法 23 return 'name:{0},age:{1},gongtong:{2}'.format(self.getname(),self.getage(),self.gontong) 24 25 #第一個實例化對象 26 per_1 = person('liu','25') #實例化類,調用類中的屬性和方法,需要先進行類實例化對象 27 print(per_1.getname(),per_1.getage()) #類的實例化對象per_1調用函數getname(),來獲取name參數的值;類的實例化對象per_1調用函數getage(),來獲取name參數的值。 28 29 30 #第二個實例化對象 31 per_2 = person('xiao',66) #實例化類,調用類中的屬性和方法,需要先進行類實例化對象 32 print(per_2.getname(),per_2.getage()) #類的實例化對象per_1調用函數getname(),來獲取name參數的值;類的實例化對象per_1調用函數getage(),來獲取name參數的值。 33 per_2.setname('xiaohong'),per_2.setage('12') #調用類中的setname()函數,對name重新賦值;#調用類中的setage()函數,對age重新賦值 34 print(per_2.getname(),per_2.getage()) #再次列印,看重新賦值成功沒有 35 print(per_2.info()) #類的實例化對象per_2,調用類的info()方法,獲取類屬性和其他方法
直接附上列印結果,代碼太長,無法截全部。~~~~~