欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1748 0

繼承

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

復制代碼 代碼如下:

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 *”來加載。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日日摸夜夜添夜夜添亚洲女人 | 久久新网址 | 欧美日韩亚洲一区 | 国精品日韩欧美一区二区三区 | 久久久久久久99精品免费观看 | 九九视频网 | 国产精品成人观看视频国产 | 国产乳摇福利视频在线观看 | 台湾av在线| 成人午夜| 一级毛片免费在线播放 | 能直接看av的网站 | 久久亚洲春色中文字幕久久 | 久久精品国产一区二区 | 奇米影视777色 | 精品无码中出一区二区 | 天天艹夜夜艹 | 欧美一区2区三区4区公司二百 | 国产日本三级欧美三级妇三级四 | 成人性视频免费网站 | 亚洲精品不卡 | 欧美成人三级一区二区在线观看 | 日一区二区三区 | 国产一区二区av | 网红和老师啪啪对白清晰 | 日韩精品亚洲专区在线电影不卡 | 97精品一区二区 | 亚洲国产一区二区三区四区色欲 | 国产综合亚洲精品一区二 | 在线视频a | 亚洲精品午夜国产va久久成人 | 日韩中文字幕免费版 | 天天影视综合网 | 欧美成人精品不卡视频在线观看 | 日本午夜大片免费观看视频 | 一区二区三区免费视频观看 | 一级美女 | 国产午夜亚洲精品一区 | 国产成人免费高清激情明星 | 五月网站 | 国产精品爽爽va在线观看网站 |