溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

一篇文章教會(huì)你什么是Python中的類

發(fā)布時(shí)間:2020-11-19 14:32:39 來源:億速云 閱讀:173 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹一篇文章教會(huì)你什么是Python中的類,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

面向?qū)ο缶幊淌亲钣行У能浖帉懛椒ㄖ?。在面向?qū)ο缶幊讨?,你編寫表示現(xiàn)實(shí)世界中的事物和情景的類,并基于這些類來創(chuàng)建對(duì)象。編寫類時(shí),你定義一大類對(duì)象都有的通用行為?;陬悇?chuàng)建對(duì)象時(shí),每個(gè)對(duì)象都自動(dòng)具備這種通用行為,然后可根據(jù)需要賦予每個(gè)對(duì)象獨(dú)特的個(gè)性。

創(chuàng)建和使用類

創(chuàng)建Dog類

根據(jù)約定,在Python中,首字母大寫的名稱指的是類。 這個(gè)類定義中的括號(hào)是空的,因?yàn)槲覀円獜目瞻讋?chuàng)建這個(gè)類。類中的函數(shù)稱為方法。

代碼如下:

class dog():
    # 創(chuàng)建一個(gè)小狗的類
    def _init_(self,name,age):
        # 初始化屬性name和age
        self.name = name
        self.age = age
    def sit(self):
        # 模擬小狗被命令時(shí)蹲下
        print(self.name.title() + " is now sitting !")
    def roll_over(self):
        # 打滾
        print(self.name.title() + " rolled over!")

__init__方法

__init__()是一個(gè)特殊的方法,每當(dāng)你根據(jù)Dog類創(chuàng)建新實(shí)例時(shí),Python都會(huì)自動(dòng)運(yùn)行它。在這個(gè)方法的名稱中,開頭和末尾各有兩個(gè)下劃線,這是一種約定,旨在避免Python默認(rèn)方法與普通方法發(fā)生名稱沖突。它包含了三個(gè)形參:self、name和age,在這個(gè)方法的定義中,形 參self必不可少,還必須位于其他形參的前面。

根據(jù)類創(chuàng)建實(shí)例

可將類視為有關(guān)如何創(chuàng)建實(shí)例的說明。

代碼示例:

my_dog = Dog('demo',18)
print(my_dog.name.title())
print(my_dog.age)

訪問屬性

要訪問實(shí)例的屬性,可使用句點(diǎn)表示法。例如my_dog.name

調(diào)用方法

要調(diào)用方法,可指定實(shí)例的名稱和要調(diào)用的方法,并用句點(diǎn)分隔它們。

代碼示例:

my_dog = Dog('demo', 6)
my_dog.sit()
my_dog.roll_over()

創(chuàng)建多個(gè)實(shí)例

my_dog = Dog('demo', 6)
you_dog = Dog('demo_go', 6)

使用類和實(shí)例

類編寫好后,你的大部分時(shí)間都將花在使用根據(jù)類創(chuàng)建的實(shí)例上。你需要執(zhí)行的一個(gè)重要任務(wù)是修改實(shí)例的屬性。你可以直接修改實(shí)例的屬性,也可以編寫方法以特定的方式進(jìn)行修改。

Car類

class Car():
    # Car類
    def __init__(self,name,model,year):
        # 初始化
        self.name = name
        self.model = model
        self.year = year
    
    def get_descript(self):
        # 返回描述信息
        long_name = str(self.year) + '---' + self.name + '---' + self.model
        return long_name.title()
        
# 示例化
my_car = Car('audi','A4','2016')
print(my_car.get_descript())

處理的結(jié)果是:

2016---Audi---A4

給屬性設(shè)置默認(rèn)值

類中的每個(gè)屬性都必須有初始值,哪怕這個(gè)值是0或空字符串。在有些情況下,如設(shè)置默認(rèn)值時(shí),在方法__init__()內(nèi)指定這種初始值是可行的;如果你對(duì)某個(gè)屬性這樣做了,就無(wú)需包含為它提供初始值的形參。

在car類在__init__的方法新增屬性self.odometer_reading = 0,同時(shí)新增一個(gè)方法read_odometer():

def read_odometer(self): 
    # 打印一條指出汽車?yán)锍痰南?nbsp;
    print("汽車的里程有:" + str(self.odometer_reading))

調(diào)用該方法:

my_car = Car('audi','A4','2016')
print(my_car.get_descript())
my_car.read_odometer()

修改屬性的值

可以以三種不同的方式修改屬性的值:直接通過實(shí)例進(jìn)行修改;通過方法進(jìn)行設(shè)置;通過方法進(jìn)行遞增(增加特定的值)。

直接修改屬性的值

代碼如下:

my_new_car.odometer_reading = 23 my_new_car.read_odometer()

有時(shí)候需要像這樣直接訪問屬性,但其他時(shí)候需要編寫對(duì)屬性進(jìn)行更新的方法。

通過方法修改屬性的值

在Car類新增一個(gè)update_odometer()的方法,專門用來修改屬性的值。

代碼如下:

def update_odometer(self,update_value):    
# 修改里程值
    self.odometer_reading = update_value

在調(diào)用的時(shí)候就很簡(jiǎn)單了:

my_new_car.update_odometer(66)
my_new_car.read_odometer()

通過方法對(duì)屬性的值進(jìn)行遞增

遞增的邏輯其實(shí)很簡(jiǎn)單,只有將之前的記錄保存并且和后面?zhèn)魅氲闹颠M(jìn)行相加操作即可。

代碼如下:

def update_odometer(self,update_value):
    # 修改里程值
    self.odometer_reading += update_value

調(diào)用方法:

my_new_car.update_odometer(6)
my_new_car.read_odometer()
my_new_car.update_odometer(1)
my_new_car.read_odometer()

以上是一篇文章教會(huì)你什么是Python中的類的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI