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

Python中的面向對象編程詳解(下)

 更新時間:2015年04月13日 09:14:17   投稿:junjie  
這篇文章主要介紹了Python中的面向對象編程詳解(下),本文講解了繼承、super關鍵字、重寫、多重繼承、類、實例和其他對象的內(nèi)建函數(shù)、私有化等內(nèi)容,需要的朋友可以參考下

繼承

繼承描述了基類的屬性如何“遺傳”給派生類。一個子類可以繼承它的基類的任何屬性,不管是數(shù)據(jù)屬性還是方法。
創(chuàng)建子類的語法看起來與普通(新式)類沒有區(qū)別,一個類名,后跟一個或多個需要從其中派生的父類:

復制代碼 代碼如下:

class SubClassName (ParentClass1[, ParentClass2, ...]):
    'optional class documentation string'
    class_suite

實例
復制代碼 代碼如下:

class Parent(object): # define parent class 定義父類
    def parentMethod(self):
    print 'calling parent method'

class Child(Parent): # define child class 定義子類
    def childMethod(self):
    print 'calling child method'


繼承與覆蓋

繼承

不同于Java,python的子類繼承父類后,會把父類的所有的方法,包括構造器init()也繼承下來.

復制代碼 代碼如下:

class Parent():
    def __init__(self):
        print "init Parent class instance"

    def func(self):
        print "call parent func"

class Child(Parent):
    def __init__(self):
        print "init Child class instance"

child = Child()
child.func()


輸出
復制代碼 代碼如下:

init Child class instance
call parent func

super關鍵字

super 是用來解決多重繼承問題的,直接用類名調(diào)用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重復調(diào)用(鉆石繼承)等種種問題。語法如下

復制代碼 代碼如下:

super(type[, obj])

示例
復制代碼 代碼如下:

class C(B):
    def method(self, arg):
        super(C, self).method(arg)

注意

super繼承只能用于新式類,用于經(jīng)典類時就會報錯。
新式類:必須有繼承的類,如果沒什么想繼承的,那就繼承object
經(jīng)典類:沒有父類,如果此時調(diào)用super就會出現(xiàn)錯誤:『super() argument 1 must be type, not classobj』
實例

復制代碼 代碼如下:

class Parent(object):
    def __init__(self):
        self.phone = '123456'
        self.address = 'abcd'

class Child(Parent):
    def __init__(self):
        super(Child, self).__init__()
        self.data = 100

def main():
    child = Child()
    print "phone is: ", child.phone
    print "address is: ", child.address
    print "data is: ", child.data

if __name__ == '__main__':
    main()


輸出
復制代碼 代碼如下:

phone is:  123456
address is:  abcd
data is:  100

重寫

子類只要重新定義一個與父類的方法同名的方法,就可以重寫覆蓋父類的方法. 子類只要把上例父類的func(self)重寫就行了.

復制代碼 代碼如下:

class Parent():
def __init__(self):
print "init Parent class instance"
def func(self):
print "call parent func"
class Child(Parent):
def __init__(self):
print "init Child class instance"

child = Child()
child.func()


輸出
復制代碼 代碼如下:

init Child class instance
call Child func

多重繼承

同 C++一樣,Python 允許子類繼承多個基類。但一般不推薦用多重繼承.語法如下:

復制代碼 代碼如下:

class Father():
    def __init__(self):
        print "init Father instance"

class Mother():
    def __init__(self):
        print "init Mother instance"

class Child(Father, Mother):
    pass


類、實例和其他對象的內(nèi)建函數(shù)

issubclass()

布爾函數(shù)判斷一個類是另一個類的子類或子孫類。它有如下語法:

復制代碼 代碼如下:

issubclass(sub, sup)

isinstance()

布爾函數(shù)在判定一個對象是否是另一個給定類的實例時,非常有用。它有如下語法:

復制代碼 代碼如下:

isinstance(obj1, obj2)

attr()系列函數(shù)

●hasattr()
它的目的就是為了決定一個對象是否有一個特定的屬性,一般用于訪問某屬性前先作一下檢查。
●getattr()和setattr()
●getattr()和 setattr()函數(shù)相應地取得和賦值給對象的屬性,

●delattr()
刪除特定的屬性

實例

復制代碼 代碼如下:

class Child(Parent):
    def __init__(self):
        self.data = 100

child = Child()
print "has data attr?", hasattr(child, 'data')

print "delete attr"
delattr(child, 'data')

print "has data attr?", hasattr(child, 'data')

print "set data attr to 200"
setattr(child, 'data', 200)
print "data attr is: ", getattr(child, 'data')


輸出
復制代碼 代碼如下:

has data attr? True
delete attr
has data attr? False
set data attr to 200
data attr is:  200

私有化

Python沒有像Java那樣實現(xiàn)真正的封裝,只是用雙劃線和單劃線實現(xiàn)私有化.

●雙劃線
防止外部訪問.如在func前加雙劃線,可以防止包括子類的實例的訪問.

復制代碼 代碼如下:

    def __func(self):
        print "call"

●單劃線
防止模塊的屬性用“from mymodule import *”來加載。

相關文章

  • 從零學Python之入門(三)序列

    從零學Python之入門(三)序列

    今天比較清閑,多寫幾篇入門篇,本文是入門系列的第三篇,我們來學習下Python中的序列。
    2014-05-05
  • Python開發(fā)圍棋游戲的實例代碼(實現(xiàn)全部功能)

    Python開發(fā)圍棋游戲的實例代碼(實現(xiàn)全部功能)

    圍棋是一種古老而復雜的策略棋類游戲,起源于中國,已有超過2500年的歷史,本文介紹了如何用Python開發(fā)一個簡單的圍棋游戲,實例代碼涵蓋了游戲的基本規(guī)則、界面設計、棋盤實現(xiàn)、棋子管理、游戲邏輯等多個方面,通過逐步實現(xiàn)落子、吃子、判斷勝負等功能
    2024-12-12
  • python實現(xiàn)將文本轉換成語音的方法

    python實現(xiàn)將文本轉換成語音的方法

    這篇文章主要介紹了python實現(xiàn)將文本轉換成語音的方法,涉及Python中pyTTS模塊的相關使用技巧,需要的朋友可以參考下
    2015-05-05
  • 一起來學習Python的列表

    一起來學習Python的列表

    這篇文章主要為大家詳細介紹了Python的列表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python檢測數(shù)據(jù)類型的方法總結

    Python檢測數(shù)據(jù)類型的方法總結

    在本篇文章里小編給大家整理了關于Python檢測數(shù)據(jù)類型的方法和相關實例代碼,需要的朋友們跟著學習下。
    2019-05-05
  • Python如何在main中調(diào)用函數(shù)內(nèi)的函數(shù)方式

    Python如何在main中調(diào)用函數(shù)內(nèi)的函數(shù)方式

    這篇文章主要介紹了Python如何在main中調(diào)用函數(shù)內(nèi)的函數(shù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python?實現(xiàn)銀行卡號查詢銀行名稱和簡稱功能

    python?實現(xiàn)銀行卡號查詢銀行名稱和簡稱功能

    這篇文章主要介紹了python?實現(xiàn)銀行卡號查詢銀行名稱和簡稱功能,本文通過實例代碼補充介紹了基于PyQT5+OpenCv實現(xiàn)銀行卡號識別功能,感興趣的朋友一起看看吧
    2023-11-11
  • python獲取Linux發(fā)行版名稱

    python獲取Linux發(fā)行版名稱

    這篇文章主要介紹了python獲取Linux發(fā)行版名稱的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 淺析matlab中imadjust函數(shù)

    淺析matlab中imadjust函數(shù)

    對進行圖像的灰度變換,即調(diào)節(jié)灰度圖像的亮度或彩色圖像的顏色矩陣。這篇文章主要介紹了matlab中imadjust函數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下
    2020-02-02
  • python操作MySQL的詳細教程

    python操作MySQL的詳細教程

    PyMySQL 是一個純 Python 的庫,用于連接 MySQL 數(shù)據(jù)庫,并執(zhí)行 SQL 語句,該庫的主要用途是通過 Python 代碼與 MySQL 數(shù)據(jù)庫進行交互,比如執(zhí)行查詢、插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)等操作,本文介紹了python操作MySQL的詳細教程,需要的朋友可以參考下
    2024-10-10

最新評論

庐江县| 澄城县| 西城区| 神木县| 同江市| 巧家县| 沙湾县| 鱼台县| 英山县| 高碑店市| 竹溪县| 高唐县| 清流县| 潮州市| 金坛市| 南丹县| 宁明县| 北流市| 汕头市| 玛沁县| 太保市| 九龙县| 谷城县| 望都县| 新闻| 沾益县| 岑溪市| 万载县| 浮山县| 高清| 盐山县| 紫金县| 平舆县| 逊克县| 崇州市| 广东省| 霍城县| 方正县| 南平市| 天水市| 吴忠市|