最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 面向對象三大特征詳解

 更新時間:2021年10月27日 15:37:40   作者:寵乖儀  
這篇文章主要介紹了python 面向對象三大特征,小編覺得這篇文章講的不錯,感興趣的朋友一起來閱讀下面文章吧

一、面向對象三大特征介紹

Python 是面向對象的語言,也支持面向對象編程的三大特性:繼承、封裝(隱藏)、多態(tài)。

1、封裝(隱藏)

隱藏對象的屬性和實現細節(jié),只對外提供必要的方法。

通過“私有屬性、私有方法”的方式,實現“封裝”。Python 追求簡潔的語法

2、繼承

繼承可以讓子類具有父類的特性,提高了代碼的重用性。從設計上是一種增量進化,原有父類設計不變的情況下,可以增加新的功能,或者改進已有的算法。

3、多態(tài)

多態(tài)是指同一個方法調用由于對象不同會產生不同的行為。生活中這樣的例子比比皆是:同樣是休息方法,人不同休息方法不同。張三休息是睡覺,李四休息是玩游戲,程序員休息是“敲幾行代碼”。

二、繼承

繼承是面向對象程序設計的重要特征,也是實現“代碼復用”的重要手段。
如果一個新類繼承自一個設計好的類,就直接具備了已有類的特征,就大大降低了工作
難度。已有的類,我們稱為“父類或者基類”,新的類,我們稱為“子類或者派生類”。

1、語法格式

Python 支持多重繼承,一個子類可以繼承多個父類。繼承的語法格式如下:

class 子類類名(父類 1[,父類 2,...]):

類體:如果在類定義中沒有指定父類,則默認父類是 object 類。也就是說,object 是所有類的父類,里面定義了一些所有類共有的默認實現,比如:__new__()。

定義子類時,必須在其構造函數中調用父類的構造函數。調用格式如下:

父類名.__init__(self, 參數列表)

class Person:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    def say_age(self):
        print("年齡是:",self.__age)
class Student(Person):
    def __init__(self,name,age,grade):
        self.grade = grade
        Person.__init__(self,name,age) 
# 構造函數中包含調用父類構造函數。根據需要,不是必須。 子類并不會自動調用父類的__init__(),我
# 們必須顯式的調用它。
if __name__ == '__main__':
    s=Student('諸葛',18,1)
    s.say_age()

2、類成員的繼承和重寫

1. 成員繼承:子類繼承了父類除構造方法之外的所有成員。

2. 方法重寫:子類可以重新定義父類中的方法,這樣就會覆蓋父類的方法,也稱為“重寫”

class Person:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    def say_age(self):
        print("年齡是:",self.__age)
class Student(Person):
    def __init__(self,name,age,grade):
        self.grade = grade
        Person.__init__(self,name,age) 
    def say_age(self):
        print(self.name,"的年齡是:",self.age)
# 構造函數中包含調用父類構造函數。根據需要,不是必須。 子類并不會自動調用父類的__init__(),我
# 們必須顯式的調用它。
if __name__ == '__main__':
    s=Student('諸葛',18,1)
    s.say_age()

3、super()獲得父類定義

在子類中,如果想要獲得父類的方法時,我們可以通過 super()來做。

super()代表父類的定義,不是父類對象。

class A:
    def say(self):
        print("A: ",self)
        print("say AAA")
class B(A):
    def say(self):
        #A.say(self) 調用父類的 say 方法
        super().say() #通過 super()調用父類的方法
        print("say BBB")
if __name__ =="__main__:
    b = B()
    b.say()

4、設計模式_工廠模式實現

工廠模式實現了創(chuàng)建者和調用者的分離,使用專門的工廠類將選擇實現類、創(chuàng)建對象進行統(tǒng)一的管理和控制。

class CarFactory:
    def createCar(self,brand):
        if brand == "1":
            return one()
        elif brand == "2":
            return two()
        elif brand == '3':
            return three()
        else:
            return "未知品牌,無法創(chuàng)建"
class one:
    pass
class two:
    pass
class three:
    pass
factory = CarFactory()
c1 = factory.createCar("1")
c2 = factory.createCar("2")
print(c1)
print(c2)

5、設計模式_單例模式實現

單例模式(Singleton Pattern)的核心作用是確保一個類只有一個實例,并且提供一個訪問該實例的全局訪問點。

單例模式只生成一個實例對象,減少了對系統(tǒng)資源的開銷。當一個對象的產生需要比較多的資源,如讀取配置文件、產生其他依賴對象時,可以產生一個“單例對象”,然后永久駐留內存中,從而極大的降低開銷。

class One:
    __obj = None   #  用于存儲這個單例
    __init_flag = True
    def __new__(cls, *args, **kwargs):
         # 指的是One這個類里面的  類屬性
         if cls.__obj == None:
               # object 是類的默認父類
             cls.__obj = object.__new__(cls)
         return cls.__obj
    def __init__(self,name):
        if One.__init_flag:
            print( "init....")
            self.name = name
            One.__init_flag = False
if __name__=='__main__':
    a = One( "aa")
    print(a)
    b = One( "bb")
    print(b)

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • TensorFlow卷積神經網絡之使用訓練好的模型識別貓狗圖片

    TensorFlow卷積神經網絡之使用訓練好的模型識別貓狗圖片

    今天小編就為大家分享一篇關于TensorFlow卷積神經網絡之使用訓練好的模型識別貓狗圖片,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • python 如何設置柱狀圖參數

    python 如何設置柱狀圖參數

    這篇文章主要介紹了在python中設置柱狀圖參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python爬蟲輔助利器PyQuery模塊的安裝使用攻略

    Python爬蟲輔助利器PyQuery模塊的安裝使用攻略

    這篇文章主要介紹了Python爬蟲輔助利器PyQuery模塊的安裝使用攻略,PyQuery可以方便地用來解析HTML內容,使其成為眾多爬蟲程序開發(fā)者的大愛,需要的朋友可以參考下
    2016-04-04
  • Python?作為小程序后端的三種實現方法(推薦)

    Python?作為小程序后端的三種實現方法(推薦)

    這篇文章主要介紹了Python?作為小程序后端的三種方法,在這比較推薦前兩種方法,本文通過實例圖文相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Python九九乘法表的七種實現方式詳解

    Python九九乘法表的七種實現方式詳解

    在Python中,輸出九九乘法表是一道非?;A的題目,但對于初學者來說,也是一個很好的練習和鞏固基礎知識的機會,這篇文章主要給大家介紹了關于Python九九乘法表的七種實現方式,需要的朋友可以參考下
    2023-09-09
  • 使用Python實現為PDF文件添加圖章

    使用Python實現為PDF文件添加圖章

    在日常工作中,我們經常需要給PDF文檔添加一些標識,比如公司的圖章或水印圖章,所以本文就來為大家詳細介紹一下如何使用Python實現為PDF文件添加圖章,需要的可以參考下
    2023-11-11
  • python命令行交互引導用戶輸入一個數字實現

    python命令行交互引導用戶輸入一個數字實現

    這篇文章主要為大家介紹了python命令行交互引導用戶輸入一個數字實現,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python實現監(jiān)控鍵盤鼠標操作示例【基于pyHook與pythoncom模塊】

    Python實現監(jiān)控鍵盤鼠標操作示例【基于pyHook與pythoncom模塊】

    這篇文章主要介紹了Python實現監(jiān)控鍵盤鼠標操作,結合實例形式分析了Python基于pyHook與pythoncom模塊的鍵盤、鼠標事件響應及日志文件操作相關實現技巧,需要的朋友可以參考下
    2018-09-09
  • python和websocket構建實時日志跟蹤器的步驟

    python和websocket構建實時日志跟蹤器的步驟

    這篇文章主要介紹了python和websocket構建實時日志跟蹤器的步驟,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python實現接口下載json文件并指定文件名稱

    Python實現接口下載json文件并指定文件名稱

    在 Web 開發(fā)中,提供文件下載功能是一種常見的需求,尤其是當涉及到導出數據為 JSON 格式時,為了確保文件名的自定義以及避免亂碼問題,開發(fā)者需要采取一些特定的措施,本文介紹了Python實現接口下載json文件并指定文件名稱,需要的朋友可以參考下
    2024-10-10

最新評論

安远县| 松滋市| 黄骅市| 广南县| 宁波市| 平乡县| 上蔡县| 哈巴河县| 应用必备| 四川省| 罗源县| 桐梓县| 崇文区| 丹阳市| 南宫市| 霍邱县| 定南县| 嵊州市| 云浮市| 高台县| 紫阳县| 读书| 大港区| 伊吾县| 长垣县| 东山县| 浦北县| 怀宁县| 静宁县| 青海省| 贵州省| 永顺县| 渑池县| 商河县| 民勤县| 黔东| 潍坊市| 文水县| 宁津县| 陵川县| 嘉禾县|