從面向過程到物件導向的程式設計
看中的是解決問題的過程,首先分析出解決問題的步驟,然後按照分析出來的步驟進行解決問題,這就是面向過程程式設計。面向過程程式設計主要使用到函式知識,將每個步驟的過程封裝在乙個函式裡再依次呼叫。
主要會使用到「類與物件」方面的知識:得先有類才會有物件,類是物件的母版
一、認識類
1.【類】是乙個函式包。類中可以放置函式和變數,然後類中的函式可以很方便的使用類中的變數。
2.就像函式用 " def() " 定義,則類用 " class() " 來定義。
3.在類中我們將定義的函式稱作類的「方法」,通常用「類名.函式名」的格式來讓類中的方法執行起來。
4.在類中我們定義的變數叫做類的「屬性」,通常用「類名.變數名」的格式將類中的屬性值提取出來。
5.不過類中的屬性(變數)也不是不能改變,使用類名.變數名的格式,可以讓我們在類的外面,增加或修改類的屬性:
5.類方法不僅可以呼叫類屬性,還可以直接呼叫其它類方法(如下所示:)
class 成績單():
@classmethod
def 錄入成績單(cls):
cls.學生姓名 = input('請輸入學生姓名:')
cls.語文_成績 = int(input('請輸入語文成績:'))
cls.數學_成績 = int(input('請輸入數學成績:'))
@classmethod
def 計算平均分(cls):
平均分 = (cls.語文_成績 + cls.數學_成績)/2
return 平均分
@classmethod
def 評級(cls):
平均分 = cls.計算平均分()
if 平均分》=90:
print(cls.學生姓名 + '的評級是:優')
elif 平均分》= 80 and 平均分<90 :
print(cls.學生姓名 + '的評級是:良')
elif 平均分》= 60 and 平均分<80 :
print(cls.學生姓名 + '的評級是:中')
else:
print(cls.學生姓名 + '的評級是:差')
成績單.錄入成績單()
成績單.評級()
class aaa():
b1=100
b2=200
@classmethod #①
def 函式1(cls): #②
print(cls.b1) #③
print(cls.b2)
① 第乙個格式@classmethod的中文意思就是「類方法」,@classmethod宣告了函式1是類方法,這樣才能允許函式1使用類屬性中的資料。類中的方法在需要呼叫類中的屬性時才需要使用@classmethod
② 第二個格式cls的意思是class的縮寫。如果類方法函式1想使用類屬性(也就是類中的變數),就要寫上cls為函式1的第乙個引數,也就是把這個類作為引數傳給自己,這樣就能被允許使用類中的資料。
③ 第三個格式是cls.變數。類方法想使用類屬性的時候,需要在這些變數名稱前加上cls.。
二、給類方法傳參
1.類方法僅使用外部引數
一首詩 = ['《卜運算元》','我住長江頭,','君住長江尾。','日日思君不見君,','共飲長江水。']
class 念詩類():
def 念詩函式(引數):
for i in 引數:
print(i)
念詩類.念詩函式(一首詩)
2.類方法僅使用內部引數
class 念詩類():
一首詩 = ['《卜運算元》','我住長江頭,','君住長江尾。','日日思君不見君,','共飲長江水。']
@classmethod
def 念詩函式(cls):
for i in cls.一首詩:
print(i)
念詩類.念詩函式()
3.類同時使用內部引數和外部引數
class 加100類():
變數 = 100
@classmethod
def 加100函式(cls,引數):
總和 = cls.變數 + 引數
print('加100函式計算結果如下:')
print(總和)
引數 = int(input('請輸入乙個整數:'))
加100類.加100函式(引數)
三、增加\修改類的屬性
1.從外部增加\修改類屬性
class 類():
@classmethod
def 列印類屬性(cls):
print(cls.變數)
類.變數 = input('請輸入字串:') #輸入asd
類.列印類屬性() #輸出asd
2.從內部增加\修改類屬性
class 類():
@classmethod
def 增加類屬性(cls):
cls.變數 = input('請隨意輸入字串:')
類.增加類屬性()
print('列印新增的類屬性:') #ghk
print(類.變數) #ghk
class 念詩類():
一首詩 = ['《卜運算元》','我住長江頭,','君住長江尾。','日日思君不見君,','共飲長江水。']
@classmethod
def 念詩函式(cls):
cls.接收人 = input('請輸入你想給誰念詩:')
print('念給'+ cls.接收人 +'的詩:')
for i in cls.一首詩:
print(i)
念詩類.念詩函式()
類的方法直接呼叫其他方法舉例:
①是呼叫類方法評級,②是在評級內部呼叫了類方法計算平均分,③④是類方法計算平均分的過程,最後返回的值重新賦值給了評級中的類屬性平均分。
這裡有個小點要注意,def 評級(cls)中的平均分和def 計算平均分(cls)的平均分,是兩個不同的變數,因為它們在不同的函式下工作,作用域不同。
四、類的例項化
1.例項化:從類變成例項物件(類---->(例項化)----->例項物件)
2.「cls代表「類」的意思,self代表「例項」的意思,這樣寫是編碼規範(程式設計師們的共識),但不是強制要求。」
3."當類支援例項化的時候,self是所有類方法位於首位、預設的特殊引數"
4.」類和例項的關係,就像母體和複製品的關係一樣。當乙個類例項化為多個例項後,例項將原封不動的獲得類屬性,也就是例項屬性和類屬性完全相等。「
5.「重寫類方法」分成兩個步驟:第乙個步驟是在類的外部寫乙個函式,第二個步驟是把這個新函式的名字賦值給類.原始函式
6."我們可以通過重寫類方法,讓例項方法發生變化,但我們不能重寫例項方法"
class 幸運():
def 好運翻倍(self):
print('好的,我把它存了起來,然後翻了888倍還給你:' + str(self.幸運數*888))
def 新函式(self):
print('我是重寫後的新函式!')
print('好的,我把它存了起來,然後翻了666倍還給你:' + str(self.幸運數*666))
幸運.幸運數 = int(input('你的幸運數是多少?請輸入乙個整數。'))
幸運.好運翻倍= 新函式
例項 = 幸運() # 例項化
例項.好運翻倍()
7.例項和屬性的方法①修改類的屬性和方法,會影響所有例項的屬性和方法
②修改某個例項的屬性,只會影響這個例項本身
③不能修改例項的方法
python學習記錄1 給自己
今天學習的內容有 1.print的用法 print 登鸛雀樓 白日依山盡,黃河入海流。欲窮千里目,更上一層樓。2.字串string描述 寫法字串表述 單引號 雙引號 轉義字元 轉義 n換行 拼接字串 使用 獲取資料型別 type 函式 獲取資料長度 len 函式 數字不可使用該函式 轉換資料型別 s...
python學習記錄6 給自己 numpy安裝
來啦來啦!昨天沒有寫東西,今天繼續,m醬加油!昨天最後還有乙個小知識點忘記記錄了,我天!昨天用網頁學習了乙個求平均數的模板,在本機執行的時候竟然發現沒有安裝numpy包不能用,才知道原來要自己安裝才可以用,我真是見識太少了。安裝的過程中還遇到了一點點問題,索性找到了解決辦法。import numpy...
python學習記錄 10
測試題 0.列表都可以存放一些什麼東西?字串 數值 列表 1.向列表增加元素有哪些方法?4.有列表 name f i h c 如果小甲魚想要在元素 i 和 h 之間插入元素 s 應該使用什麼方法來插入?insert 2,s 動動手 0.自己動手試試看,並分析在這種情況下,向列表新增資料應當採用哪種方...