python學習記錄10 給自己 類與物件

2021-09-11 21:50:18 字數 4389 閱讀 9752

從面向過程到物件導向的程式設計

看中的是解決問題的過程,首先分析出解決問題的步驟,然後按照分析出來的步驟進行解決問題,這就是面向過程程式設計。面向過程程式設計主要使用到函式知識,將每個步驟的過程封裝在乙個函式裡再依次呼叫。

主要會使用到「類與物件」方面的知識:得先有類才會有物件,類是物件的母版

一、認識類

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.自己動手試試看,並分析在這種情況下,向列表新增資料應當採用哪種方...