国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python中的面向對象編程詳解(下)

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

2020-06-04 09:41腳本之家 Python

這篇文章主要介紹了Python中的面向對象編程詳解(下),本文講解了繼承、super關鍵字、重寫、多重繼承、類、實例和其他對象的內建函數、私有化等內容,需要的朋友可以參考下

繼承

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

復制代碼 代碼如下:

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

復制代碼 代碼如下:

super(type[, obj])

示例
復制代碼 代碼如下:

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

注意

 

super繼承只能用于新式類,用于經典類時就會報錯。
新式類:必須有繼承的類,如果沒什么想繼承的,那就繼承object
經典類:沒有父類,如果此時調用super就會出現錯誤:『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


類、實例和其他對象的內建函數

 

issubclass()

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

復制代碼 代碼如下:

issubclass(sub, sup)

isinstance()

 

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

復制代碼 代碼如下:

isinstance(obj1, obj2)

attr()系列函數

 

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

●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那樣實現真正的封裝,只是用雙劃線和單劃線實現私有化.

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

復制代碼 代碼如下:

    def __func(self):
        print "call"

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

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 少妇一区二区三区免费观看 | 亚洲二区在线观看 | 中文字幕av一区 | 亚洲国产精品网站 | 久久久av | 精品一区二区在线观看 | 大胆裸体gogo毛片免费看 | 99热69 | 国产真实乱全部视频 | 国产乱码久久久久久一区二区 | 91看片网站 | 日本免费一区二区三区四区 | 激情小视频 | 成年人免费网站 | 91精品久久久久久久久久入口 | 欧美精品一二三 | 黄色小视频在线观看 | 一级色网站 | 国产精品久久久久久久 | 亚洲精品成人天堂一二三 | 精品毛片在线 | 亚洲一视频 | 日韩一区精品视频 | 国产精品网站在线看 | 一级片在线观看网站 | 国产特黄大片aaaaa毛片 | 久久九九99 | 国产精品一二区 | 日韩视频专区 | 免费h在线观看 | 欧美日韩成人 | 国产伦精品一区二区三区四区视频 | 黄网站在线播放 | 中文字幕1区2区3区 日韩免费高清视频 | 最新国产精品 | 国产专区在线看 | 偷拍一区二区三区四区 | 中文字幕一二三 | 国产精品久久久久久久久 | 一区二区日韩 | 久草视频在线播放 |