Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對(duì)象和類

Python 日期和時(shí)間

Python 高級(jí)知識(shí)

Python 參考手冊(cè)

Python 面向?qū)ο缶幊?/h1>

在本文中,您將通過(guò)示例了解Python中的面向?qū)ο缶幊?OOP)及其基本概念。

Python OOP簡(jiǎn)介

Python是一種多范式編程語(yǔ)言。意思是說(shuō),它支持不同的編程方法。

解決編程問(wèn)題的一種流行方法是創(chuàng)建對(duì)象。也就是所謂的面向?qū)ο缶幊蹋∣OP)。

一個(gè)對(duì)象具有兩個(gè)特征:

  • 屬性

  • 行為

讓我們舉個(gè)示例:

鸚鵡是一個(gè)物體,

  • 名稱,年齡,顏色是屬性

  • 唱歌,跳舞都是行為

Python中的OOP概念專注于創(chuàng)建可重用的代碼。此概念也稱為DRY(Don't Repeat Yourself)不要重復(fù)自己。

在Python中,OOP的概念遵循一些基本原則:

繼承使用新類的詳細(xì)信息而不修改現(xiàn)有類的過(guò)程。
封裝

對(duì)其他對(duì)象隱藏類的私有細(xì)節(jié)。

多態(tài)

對(duì)不同的數(shù)據(jù)輸入以不同的方式使用通用操作的概念。

類(class)

類是對(duì)象的藍(lán)圖。

我們可以將類看作是帶有標(biāo)簽的鸚鵡的素描。它包含有關(guān)名稱,顏色,大小等的所有詳細(xì)信息。基于這些描述,我們可以研究鸚鵡。在這里,鸚鵡是一個(gè)對(duì)象。

鸚鵡類的示例可以是:

class Parrot:
    pass

在這里,我們使用class關(guān)鍵字來(lái)定義一個(gè)空類Parrot。我們從類中構(gòu)造示例。示例是由特定類創(chuàng)建的特定對(duì)象。

對(duì)象(Object)

對(duì)象(示例)是類的示例。定義類時(shí),僅定義對(duì)象的描述。因此,沒(méi)有分配內(nèi)存或存儲(chǔ)。

鸚鵡類對(duì)象的示例可以是:

obj = Parrot()

在這里,obj是Parrot類的對(duì)象。

假設(shè)我們有鸚鵡的詳細(xì)信息。下面,我們將展示如何構(gòu)建鸚鵡的類和對(duì)象。

示例1:在Python中創(chuàng)建類和對(duì)象

class Parrot:

    # 類屬性
    species = "鳥"

    # 示例屬性
    def __init__(self, name, age):
        self.name = name
        self.age = age

# 示例化Parrot類
blu = Parrot("麻雀", 10)
woo = Parrot("鸚鵡", 15)

# 訪問(wèn)類屬性
print("麻雀是 {}".format(blu.__class__.species))
print("鸚鵡也是 {}".format(woo.__class__.species))

# 訪問(wèn)示例屬性
print("{} 有 {} 歲".format( blu.name, blu.age))
print("{} 有 {} 歲".format( woo.name, woo.age))

當(dāng)我們運(yùn)行程序時(shí),輸出將是:

麻雀是 鳥
鸚鵡也是 鳥
麻雀 有 10 歲
鸚鵡 有 15 歲

在上面的程序中,我們創(chuàng)建一個(gè)名為Parrot的類。然后,我們定義屬性。屬性是對(duì)象的特征。

然后,我們創(chuàng)建Parrot類的示例。在這里,bluwoo是我們新對(duì)象的引用(值)。

然后,我們使用class .species訪問(wèn)class屬性。類的所有示例的類屬性都是相同的。類似地,我們使用blu.name和blu.age訪問(wèn)示例屬性。但是,對(duì)于類的每個(gè)示例,示例屬性都是不同的。

要了解有關(guān)類和對(duì)象的更多信息,請(qǐng)轉(zhuǎn)到Python類和對(duì)象。

方法

方法是在類主體內(nèi)定義的函數(shù)。它們用于定義對(duì)象的行為。

示例2:在Python中創(chuàng)建方法

class Parrot:
    
    # 示例屬性
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # 示例方法
    def sing(self, song):
        return "{} sings {}".format(self.name, song)

    def dance(self):
        return "{} is now dancing".format(self.name)

# 示例化對(duì)象
blu = Parrot("Blu", 10)

# 調(diào)用我們的示例方法
print(blu.sing("'Happy'"))
print(blu.dance())

當(dāng)我們運(yùn)行程序時(shí),輸出將是:

Blu sings 'Happy'
Blu is now dancing

在上面的程序中,我們定義了兩種方法,即sing()和dance()。 這些之所以稱為示例方法,是因?yàn)樗鼈兪窃谑纠龑?duì)象(即blu)上調(diào)用的。

繼承性

繼承是一種創(chuàng)建新類的方法,用于在不修改現(xiàn)有類的細(xì)節(jié)的情況下使用它。新形成的類是一個(gè)派生類(或子類)。類似地,現(xiàn)有類是基類(或父類)。

示例3:在Python中使用繼承

# 基類
class Bird:
    
    def __init__(self):
        print("鳥準(zhǔn)備好了")

    def whoisThis(self):
        print("鳥")

    def swim(self):
        print("游得更快")

# 子類
class Penguin(Bird):

    def __init__(self):
        # call super() function
        super().__init__()
        print("企鵝準(zhǔn)備好了")

    def whoisThis(self):
        print("企鵝")

    def run(self):
        print("跑得更快")

peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

當(dāng)我們運(yùn)行該程序時(shí),輸出將是:

鳥準(zhǔn)備好了
企鵝準(zhǔn)備好了
企鵝
游得更快
跑得更快

在上面的程序中,我們創(chuàng)建了兩個(gè)類,即Bird(父類)和Penguin(子類)。子類繼承父類的功能。我們可以從swim()方法中看到這一點(diǎn)。子類再次修改了父類的行為。我們可以從whoisThis()方法中看到這一點(diǎn)。此外,我們通過(guò)創(chuàng)建新run()方法來(lái)擴(kuò)展父類的功能。

另外,我們?cè)趇nit()方法之前使用super()函數(shù)。這是因?yàn)槲覀兿M麑nit()方法的內(nèi)容從父類拉到子類中。

可封裝性

在Python中使用OOP,我們可以限制對(duì)方法和變量的訪問(wèn)。這樣可以防止數(shù)據(jù)直接修改(稱為封裝)。在Python中,我們使用下劃線作為前綴來(lái)表示私有屬性,即單“ _”或雙“ __”。

示例4:Python中的數(shù)據(jù)封裝

class Computer:

    def __init__(self):
        self.__maxprice = 900

    def sell(self):
        print("售價(jià): {}".format(self.__maxprice))

    def setMaxPrice(self, price):
        self.__maxprice = price

c = Computer()
c.sell()

# 改變價(jià)格
c.__maxprice = 1000
c.sell()

# 使用setter函數(shù)
c.setMaxPrice(1000)
c.sell()

當(dāng)我們運(yùn)行該程序時(shí),輸出將是:

售價(jià): 900
售價(jià): 900
售價(jià): 1000

在上面的程序中,我們定義了Computer類。我們使用__init__()方法存儲(chǔ)計(jì)算機(jī)的最高售價(jià)。我們?cè)噲D修改價(jià)格。但是,我們無(wú)法更改它,因?yàn)镻ython將__maxprice視為私有屬性。要更改該值,我們使用了setter函數(shù),即setMaxPrice(),它以price為參數(shù)。

多態(tài)性

多態(tài)性是一種功能(在OOP中),可以將公共接口用于多種形式(數(shù)據(jù)類型)。

假設(shè)我們需要給一個(gè)形狀上色,有多個(gè)形狀選項(xiàng)(矩形,正方形,圓形)。但是,我們可以使用相同的方法為任何形狀著色。這個(gè)概念稱為多態(tài)。

示例5:在Python中使用多態(tài)

class Parrot:

    def fly(self):
        print("鸚鵡會(huì)飛")
    
    def swim(self):
        print("鸚鵡不會(huì)游泳")

class Penguin:

    def fly(self):
        print("企鵝不會(huì)飛")
    
    def swim(self):
        print("企鵝會(huì)游泳")

# 通用接口
def flying_test(bird):
    bird.fly()

#示例化對(duì)象
blu = Parrot()
peggy = Penguin()

# 傳遞對(duì)象
flying_test(blu)
flying_test(peggy)

當(dāng)我們運(yùn)行上面的程序時(shí),輸出將是:

鸚鵡會(huì)飛
企鵝不會(huì)飛

在上面的程序中,我們定義了兩個(gè)類ParrotPenguin。它們每個(gè)都有通用的fly()方法。但是,它們的功能不同。為了允許多態(tài),我們創(chuàng)建了通用接口,即flying_test()可以接受任何對(duì)象的函數(shù)。然后,我們?cè)趂lying_test()函數(shù)中傳遞了blupeggy對(duì)象,它有效地運(yùn)行了。

面向?qū)ο缶幊痰囊c(diǎn):

  • 讓編程變得簡(jiǎn)單而有效。

  • 類是可共享的,因此可以重復(fù)使用代碼。

  • 讓編程人員的生產(chǎn)力提高

  • 通過(guò)數(shù)據(jù)抽象,數(shù)據(jù)是安全的。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清