一篇文章搞定Python中的類

qianby發表於2021-09-11

一篇文章搞定Python中的類

物件導向程式設計是最有效的軟體編寫方法之一。在物件導向程式設計中,你編寫表示現實世界中的事物和情景的類,並基於這些類來建立物件。編寫類時,你定義一大類物件都有的通用行為。基於類建立物件時,每個物件都自動具備這種通用行為,然後可根據需要賦予每個物件獨特的個性。

建立和使用類

建立Dog類

根據約定,在Python中,首字母大寫的名稱指的是類。 這個類定義中的括號是空的,因為我們要從空白建立這個類。類中的函式稱為方法。

程式碼如下:

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

__init__方法

__init__()是一個特殊的方法,每當你根據Dog類建立新例項時,Python都會自動執行它。在這個方法的名稱中,開頭和末尾各有兩個下劃線,這是一種約定,旨在避免Python預設方法與普通方法發生名稱衝突。它包含了三個形參:self、name和age,在這個方法的定義中,形 參self必不可少,還必須位於其他形參的前面。

根據類建立例項

可將類視為有關如何建立例項的說明。

程式碼示例:

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

訪問屬性

要訪問例項的屬性,可使用句點表示法。例如my_dog.name

呼叫方法

要呼叫方法,可指定例項的名稱和要呼叫的方法,並用句點分隔它們。

程式碼示例:

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

建立多個例項

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

使用類和例項

類編寫好後,你的大部分時間都將花在使用根據類建立的例項上。你需要執行的一個重要任務是修改例項的屬性。你可以直接修改例項的屬性,也可以編寫方法以特定的方式進行修改。

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())

處理的結果是:

2016---Audi---A4

給屬性設定預設值

類中的每個屬性都必須有初始值,哪怕這個值是0或空字串。在有些情況下,如設定預設值時,在方法__init__()內指定這種初始值是可行的;如果你對某個屬性這樣做了,就無需包含為它提供初始值的形參。

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

def read_odometer(self): 
    # 列印一條指出汽車裡程的訊息 
    print("汽車的里程有:" + str(self.odometer_reading))

呼叫該方法:

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

修改屬性的值

可以以三種不同的方式修改屬性的值:直接透過例項進行修改;透過方法進行設定;透過方法進行遞增(增加特定的值)。

直接修改屬性的值

程式碼如下:

my_new_car.odometer_reading = 23 my_new_car.read_odometer()

有時候需要像這樣直接訪問屬性,但其他時候需要編寫對屬性進行更新的方法。

透過方法修改屬性的值

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

程式碼如下:

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

在呼叫的時候就很簡單了:

my_new_car.update_odometer(66)
my_new_car.read_odometer()

透過方法對屬性的值進行遞增

遞增的邏輯其實很簡單,只有將之前的記錄儲存並且和後面傳入的值進行相加操作即可。

程式碼如下:

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

呼叫方法:

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3549/viewspace-2837093/,如需轉載,請註明出處,否則將追究法律責任。

相關文章