黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

python小課-類與對(duì)象筆記

系統(tǒng) 2149 0

類:

理解類最簡(jiǎn)單的方式:類是一個(gè)函數(shù)包,類中可以放置變量和函數(shù),然后類中的函數(shù)可以很方便的調(diào)用變量。

使用class來(lái)定義一個(gè)類

            
              # 語(yǔ)法:創(chuàng)建一個(gè)名為“ClassName”的類,類名一般首字母要大寫,(): 不能丟   
class ClassName():
# 如定義一個(gè)名為'狗'的類,可以寫成class Dog():
    # 規(guī)范:class語(yǔ)句后續(xù)的代碼塊要縮進(jìn)  
    def function1():
    # 定義類中的函數(shù)1
            
          

在類中被定義的函數(shù)被稱為類的【方法】,描述的是這個(gè)類能做什么。我們使用 類名.函數(shù)名() 的格式,就可以讓類的方法運(yùn)行起來(lái)

除了函數(shù)外,在類中還可以放置一堆變量,就像這樣:

            
              class 類A():
    變量1 = 100
    變量2 = -5.83
    變量3 = 'abc'
            
          

在類中被定義的變量被稱為類的【屬性】。使用 類名.變量名 的格式,可以把類中的屬性的值提取出來(lái)

不過(guò)類中的屬性(變量)也不是不能改變,使用 類名.變量名 的格式,可以讓我們?cè)陬惖耐饷妫黾踊蛐薷念惖膶傩?

class 類A():
? ? 變量1 = 100
? ? 變量2 = -5.83
? ? 變量3 = 'abc'

類A.變量1 = 99
類A.變量4 = '新增一個(gè)變量'

print(類A.變量1)
print(類A.變量4)

看到這里,你可能會(huì)有有點(diǎn)疑惑,類方法也是函數(shù),那和我們之前學(xué)的單獨(dú)定義函數(shù)有什么區(qū)別嗎?

它們兩者最大的區(qū)別,一個(gè)是它的調(diào)用格式: 類.函數(shù)名() 函數(shù)名() 多了一個(gè)【類.】,但更重要的是,“類”中的函數(shù)可以利用“類”中的變量(也就是類方法可以調(diào)用類屬性)。

python小課-類與對(duì)象筆記_第1張圖片

① 第一個(gè)格式 @classmethod 的中文意思就是“類方法”, @classmethod 聲明了 函數(shù)1 是類方法,這樣才能允許 函數(shù)1 使用類屬性中的數(shù)據(jù)。

?

② 第二個(gè)格式 cls 的意思是 class 的縮寫。如果類方法 函數(shù)1 想使用類屬性(也就是類中的變量),就要寫上 cls 函數(shù)1 的第一個(gè)參數(shù),也就是把這個(gè)類作為參數(shù)傳給自己,這樣就能被允許使用類中的數(shù)據(jù)。

③ 第三個(gè)格式是 cls.變量 。類方法想使用類屬性的時(shí)候,需要在這些變量名稱前加上 cls.

?

這就好比 類方法 之間的約法三章,所以但凡有任何格式錯(cuò)誤都會(huì)報(bào)錯(cuò)。

?

python小課-類與對(duì)象筆記_第2張圖片

?

?

?

?

?

類與對(duì)象

類是對(duì)象的模板

類的實(shí)例化:

直接使用類:

python小課-類與對(duì)象筆記_第3張圖片

?

實(shí)例化后使用類:

python小課-類與對(duì)象筆記_第4張圖片

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

            # 直接使用類
class 成績(jī)單():
    @classmethod
    def 錄入成績(jī)單(cls):
        cls.學(xué)生姓名 = input('請(qǐng)輸入學(xué)生姓名:')
        cls.語(yǔ)文_成績(jī) = int(input('請(qǐng)輸入語(yǔ)文成績(jī):'))
        cls.數(shù)學(xué)_成績(jī) = int(input('請(qǐng)輸入數(shù)學(xué)成績(jī):'))

    @classmethod
    def 打印成績(jī)單(cls):
        print(cls.學(xué)生姓名 + '的成績(jī)單如下:')
        print('語(yǔ)文成績(jī):'+ str(cls.語(yǔ)文_成績(jī)))
        print('數(shù)學(xué)成績(jī):'+ str(cls.數(shù)學(xué)_成績(jī)))

成績(jī)單.錄入成績(jī)單()
成績(jī)單.打印成績(jī)單()

# 實(shí)例化之后
class 成績(jī)單():   # ①不用再寫@classmethod
    def 錄入成績(jī)單(self):  # ②cls變成self
        self.學(xué)生姓名 = input('請(qǐng)輸入學(xué)生姓名:')  # ③cls.變成self.
        self.語(yǔ)文_成績(jī) = int(input('請(qǐng)輸入語(yǔ)文成績(jī):'))
        self.數(shù)學(xué)_成績(jī) = int(input('請(qǐng)輸入數(shù)學(xué)成績(jī):'))

    def 打印成績(jī)單(self):
        print(self.學(xué)生姓名 + '的成績(jī)單如下:')
        print('語(yǔ)文成績(jī):'+ str(self.語(yǔ)文_成績(jī)))
        print('數(shù)學(xué)成績(jī):'+ str(self.數(shù)學(xué)_成績(jī)))


成績(jī)單1 = 成績(jī)單() # ④創(chuàng)建實(shí)例對(duì)象:成績(jī)單1

成績(jī)單1.錄入成績(jī)單() # ⑤實(shí)例化后使用
成績(jī)單1.打印成績(jī)單()
          

當(dāng)我們完成實(shí)例化后,對(duì)應(yīng)于一個(gè)實(shí)例的屬性和方法,叫“實(shí)例屬性、實(shí)例方法”,不再稱為“類屬性、類方法”:

?

類和實(shí)例的關(guān)系,就像母體和復(fù)制品的關(guān)系一樣。當(dāng)一個(gè)類實(shí)例化為多個(gè)實(shí)例后,實(shí)例將原封不動(dòng)的獲得類屬性,也就是 實(shí)例屬性 類屬性 完全相等。

我們可以修改類屬性,這會(huì)導(dǎo)致所有實(shí)例屬性變化(因?yàn)轭愂悄0澹?

我們也可以修改實(shí)例屬性,但這不會(huì)影響到其他實(shí)例,也不會(huì)影響到類。因?yàn)? 每個(gè)實(shí)例都是獨(dú)立的個(gè)體

新增也是一樣的道理,在類中新增屬性會(huì)影響到實(shí)例,但在實(shí)例中新增屬性只影響這個(gè)實(shí)例自己

?

和類屬性一樣,我們可以重寫類方法,這會(huì)導(dǎo)致所有實(shí)例方法自動(dòng)被重寫

“重寫類方法”分成兩個(gè)步驟:第一個(gè)步驟是在類的外部寫一個(gè)函數(shù),第二個(gè)步驟是把這個(gè)新函數(shù)的名字賦值給 類.原始函數(shù)

python小課-類與對(duì)象筆記_第5張圖片

?

要注意的是,這里的賦值是在替換方法,并不是調(diào)用函數(shù),所以【不要加上括號(hào)】—— 寫成 類.原始函數(shù)() = 新函數(shù)() 是錯(cuò)誤的。

?

我們可以通過(guò)重寫類方法,讓實(shí)例方法發(fā)生變化,但我們不能重寫實(shí)例方法,模板給的技能不是說(shuō)換就能換的。

?

初始化函數(shù):

初始化函數(shù) 的意思是,當(dāng)你創(chuàng)建一個(gè)實(shí)例的時(shí)候,這個(gè)函數(shù)就會(huì)被調(diào)用。上面的代碼在執(zhí)行 實(shí)例 = 類() 的語(yǔ)句時(shí),就自動(dòng)調(diào)用了 __init__(self) 函數(shù)。

?

初始化函數(shù) 的寫法是固定的格式:中間是“init”,這個(gè)單詞的中文意思是“初始化”,然后前后都要有【兩個(gè)下劃線】,然后 __init__() 的括號(hào)中,第一個(gè)參數(shù)一定要寫上 self ,不然會(huì)報(bào)錯(cuò)。

?

            class 成績(jī)單():
    def __init__(self,學(xué)生姓名,語(yǔ)文_成績(jī),數(shù)學(xué)_成績(jī)):
        self.學(xué)生姓名 = 學(xué)生姓名
        self.語(yǔ)文_成績(jī) = 語(yǔ)文_成績(jī)
        self.數(shù)學(xué)_成績(jī) = 數(shù)學(xué)_成績(jī)

    def 打印成績(jī)單(self):
        print(self.學(xué)生姓名 + '的成績(jī)單如下:')
        print('語(yǔ)文成績(jī):'+ str(self.語(yǔ)文_成績(jī)))
        print('數(shù)學(xué)成績(jī):'+ str(self.數(shù)學(xué)_成績(jī)))


成績(jī)單1 = 成績(jī)單('張三',99,88)
成績(jī)單2 = 成績(jī)單('李四',64,73)
成績(jī)單3 = 成績(jī)單('王五',33,22)

成績(jī)單1.打印成績(jī)單()
成績(jī)單2.打印成績(jī)單()
成績(jī)單3.打印成績(jī)單()
          

繼承

?

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論