久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

08-面向对象----

發(fā)布時(shí)間:2024/9/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 08-面向对象---- 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 面向?qū)ο蟮某绦蛟O(shè)計(jì)的由來

請(qǐng)參考:http://www.cnblogs.com/linhaifeng/articles/6428835.html

二 什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)及為什么要有它

面向過程的程序設(shè)計(jì)的核心是過程,過程即解決問題的步驟,面向過程的設(shè)計(jì)就好比精心設(shè)計(jì)好一條流水線,考慮周全什么時(shí)候處理什么東西。

優(yōu)點(diǎn)是:極大的降低了程序的復(fù)雜度

缺點(diǎn)是:一套流水線或者流程就是用來解決一個(gè)問題,生產(chǎn)汽水的流水線無(wú)法生產(chǎn)汽車,即便是能,也得是大改,改一個(gè)組件,牽一發(fā)而動(dòng)全身。

應(yīng)用場(chǎng)景:一旦完成基本很少改變的場(chǎng)景,著名的例子有Linux內(nèi)核,git,以及Apache HTTP Server等。

面向?qū)ο蟮某绦蛟O(shè)計(jì)的核心是對(duì)象,要理解對(duì)象為何物,必須把自己當(dāng)成上帝,上帝眼里世間存在的萬(wàn)物皆為對(duì)象,不存在的也可以創(chuàng)造出來。面向?qū)ο蟮某绦蛟O(shè)計(jì)好比如來設(shè)計(jì)西游記,如來要解決的問題是把經(jīng)書傳給東土大唐,如來想了想解決這個(gè)問題需要四個(gè)人:唐僧,沙和尚,豬八戒,孫悟空,每個(gè)人都有各自的特征和技能(這就是對(duì)象的概念,特征和技能分別對(duì)應(yīng)對(duì)象的數(shù)據(jù)屬性和方法屬性),然而這并不好玩,于是如來又安排了一群妖魔鬼怪,為了防止師徒四人在取經(jīng)路上被搞死,又安排了一群神仙保駕護(hù)航,這些都是對(duì)象。然后取經(jīng)開始,師徒四人與妖魔鬼怪神仙交互著直到最后取得真經(jīng)。如來根本不會(huì)管師徒四人按照什么流程去取。

面向?qū)ο蟮某绦蛟O(shè)計(jì)的

優(yōu)點(diǎn)是:解決了程序的擴(kuò)展性。對(duì)某一個(gè)對(duì)象單獨(dú)修改,會(huì)立刻反映到整個(gè)體系中,如對(duì)游戲中一個(gè)人物參數(shù)的特征和技能修改都很容易。

缺點(diǎn):可控性差,無(wú)法向面向過程的程序設(shè)計(jì)流水線式的可以很精準(zhǔn)的預(yù)測(cè)問題的處理流程與結(jié)果,面向?qū)ο蟮某绦蛞坏╅_始就由對(duì)象之間的交互解決問題,即便是上帝也無(wú)法預(yù)測(cè)最終結(jié)果。于是我們經(jīng)常看到一個(gè)游戲人某一參數(shù)的修改極有可能導(dǎo)致陰霸的技能出現(xiàn),一刀砍死3個(gè)人,這個(gè)游戲就失去平衡。

應(yīng)用場(chǎng)景:需求經(jīng)常變化的軟件,一般需求的變化都集中在用戶層,互聯(lián)網(wǎng)應(yīng)用,企業(yè)內(nèi)部軟件,游戲等都是面向?qū)ο蟮某绦蛟O(shè)計(jì)大顯身手的好地方

面向?qū)ο蟮某绦蛟O(shè)計(jì)并不是全部。對(duì)于一個(gè)軟件質(zhì)量來說,面向?qū)ο蟮某绦蛟O(shè)計(jì)只是用來解決擴(kuò)展性。

三 類和對(duì)象

提示:python的class術(shù)語(yǔ)與c++有一定區(qū)別,與 Modula-3更像。

python中一切皆為對(duì)象,且python3統(tǒng)一了類與類型的概念,類型就是類,所以,不管你信不信,你已經(jīng)使用了很長(zhǎng)時(shí)間的類了

1 >>> dict #類型dict就是類dict 2 <class 'dict'> 3 >>> d=dict(name='egon') #實(shí)例化 4 >>> d.pop('name') #向d發(fā)一條消息,執(zhí)行d的方法pop 5 'egon'

基于面向?qū)ο笤O(shè)計(jì)一個(gè)款游戲:英雄聯(lián)盟,每個(gè)玩家選一個(gè)英雄,每個(gè)英雄都有自己的特征和和技能,特征即數(shù)據(jù)屬性,技能即方法屬性,特征與技能的結(jié)合體就一個(gè)對(duì)象。

從一組對(duì)象中提取相似的部分就是,類也是特征與技能的結(jié)合體,特征即數(shù)據(jù)并且是所有對(duì)象共享的數(shù)據(jù),技能即函數(shù)屬性并且是所有對(duì)象共享的函數(shù)屬性。

garen_hero.Q()稱為向garen_hero這個(gè)對(duì)象發(fā)送了一條消息,讓他去執(zhí)行Q這個(gè)函數(shù),完成一個(gè)功能,類似的有:

garen_hero.W()

garen_hero.E()

garen_hero.R()

一個(gè)英雄可以攻擊另外一個(gè)英雄,這就是對(duì)象之間的交互

garen_hero.attack(Riven)

?

?

3.1 類相關(guān)知識(shí)

3.1.1 初識(shí)類

在python中聲明函數(shù)與聲明類很相似

聲明函數(shù)

1 def functionName(args): 2 '函數(shù)文檔字符串' 3 函數(shù)體 1 ''' 2 class 類名: 3 '類的文檔字符串' 4 類體 5 ''' 6 7 #我們創(chuàng)建一個(gè)類 8 class Data: 9 pass 1 大前提: 2 1.只有在python2中才分新式類和經(jīng)典類,python3中統(tǒng)一都是新式類 3 2.新式類和經(jīng)典類聲明的最大不同在于,所有新式類必須繼承至少一個(gè)父類 4 3.所有類甭管是否顯式聲明父類,都有一個(gè)默認(rèn)繼承object父類(講繼承時(shí)會(huì)講,先記住) 5 在python2中的區(qū)分 6 經(jīng)典類: 7 class 類名: 8 pass 9 10 經(jīng)典類: 11 class 類名(父類): 12 pass 13 14 在python3中,上述兩種定義方式全都是新式類 在本節(jié)開頭介紹得出結(jié)論,類是數(shù)據(jù)與函數(shù)的結(jié)合,二者稱為類的屬性 class Garen: #定義英雄蓋倫的類,不同的玩家可以用它實(shí)例出自己英雄;camp='Demacia' #所有玩家的英雄(蓋倫)的陣營(yíng)都是Demacia;def attack(self,enemy): #普通攻擊技能,enemy是敵人;enemy.life_value-=self.aggressivity #根據(jù)自己的攻擊力,攻擊敵人就減掉敵人的生命值。

3.1.2 類有兩種作用:屬性引用和實(shí)例化

3.1.2.1 屬性引用(類名.屬性)

>>> Garen.camp #引用類的數(shù)據(jù)屬性,該屬性與所有對(duì)象/實(shí)例共享 'Demacia' >>> Garen.attack #引用類的函數(shù)屬性,該屬性也共享 <function Garen.attack at 0x101356510> >>> Garen.name='Garen' #增加屬性 >>> del Garen.name #刪除屬性

3.1.2.2 實(shí)例化(__init__與self)

類名加括號(hào)就是實(shí)例化,會(huì)自動(dòng)觸發(fā)__init__函數(shù)的運(yùn)行,可以用它來為每個(gè)實(shí)例定制自己的特征

class Garen: #定義英雄蓋倫的類,不同的玩家可以用它實(shí)例出自己英雄;camp='Demacia' #所有玩家的英雄(蓋倫)的陣營(yíng)都是Demacia;def __init__(self,nickname,aggressivity=58,life_value=455): #英雄的初始攻擊力58...;self.nickname=nickname #為自己的蓋倫起個(gè)別名;self.aggressivity=aggressivity #英雄都有自己的攻擊力;self.life_value=life_value #英雄都有自己的生命值;def attack(self,enemy): #普通攻擊技能,enemy是敵人;enemy.life_value-=self.aggressivity #根據(jù)自己的攻擊力,攻擊敵人就減掉敵人的生命值。

實(shí)例化:類名+括號(hào)

>>> g1=Garen('草叢倫') #就是在執(zhí)行Garen.__init__(g1,'草叢倫'),然后執(zhí)行__init__內(nèi)的代碼g1.nickname=‘草叢倫’等

self的作用是在實(shí)例化時(shí)自動(dòng)將對(duì)象/實(shí)例本身傳給__init__的第一個(gè)參數(shù),self可以是任意名字,但是瞎幾把寫別人就看不懂了。

這種自動(dòng)傳遞的機(jī)制還體現(xiàn)在g1.attack的調(diào)用上,后續(xù)會(huì)介紹。

一:我們定義的類的屬性到底存到哪里了?有兩種方式查看 dir(類名):查出的是一個(gè)名字列表 類名.__dict__:查出的是一個(gè)字典,key為屬性名,value為屬性值二:特殊的類屬性 類名.__name__# 類的名字(字符串) 類名.__doc__# 類的文檔字符串 類名.__base__# 類的第一個(gè)父類(在講繼承時(shí)會(huì)講) 類名.__bases__# 類所有父類構(gòu)成的元組(在講繼承時(shí)會(huì)講) 類名.__dict__# 類的字典屬性 類名.__module__# 類定義所在的模塊 類名.__class__# 實(shí)例對(duì)應(yīng)的類(僅新式類中)

3.2 對(duì)象相關(guān)知識(shí)

對(duì)象是關(guān)于類而實(shí)際存在的一個(gè)例子,即實(shí)例

>>> g1=Garen('草叢倫') #類實(shí)例化得到g1這個(gè)實(shí)例,基于該實(shí)例我們講解實(shí)例相關(guān)知識(shí)

3.2.1 對(duì)象/實(shí)例只有一種作用:屬性引用

#對(duì)象/實(shí)例本身其實(shí)只有數(shù)據(jù)屬性 >>> g1.nickname '草叢倫' >>> g1.aggressivity 58 >>> g1.life_value 455 ''' 查看實(shí)例屬性 同樣是dir和內(nèi)置__dict__兩種方式 特殊實(shí)例屬性 __class__ __dict__ .... '''

對(duì)象/實(shí)例本身只有數(shù)據(jù)屬性,但是python的class機(jī)制會(huì)將類的函數(shù)綁定到對(duì)象上,稱為對(duì)象的方法,或者叫綁定方法

>>> g1.attack #對(duì)象的綁定方法 <bound method Garen.attack of <__main__.Garen object at 0x101348dd8>>>>> Garen.attack #對(duì)象的綁定方法attack本質(zhì)就是調(diào)用類的函數(shù)attack的功能,二者是一種綁定關(guān)系 <function Garen.attack at 0x101356620>

對(duì)象的綁定方法的特別之處在于:obj.func()會(huì)把obj傳給func的第一個(gè)參數(shù)。

3.3 對(duì)象之間的交互

我們可以仿照garen類再創(chuàng)建一個(gè)Riven類

class Riven:camp='Noxus' #所有玩家的英雄(銳雯)的陣營(yíng)都是Noxus;def __init__(self,nickname,aggressivity=54,life_value=414): #英雄的初始攻擊力54;self.nickname=nickname #為自己的銳雯起個(gè)別名;self.aggressivity=aggressivity #英雄都有自己的攻擊力;self.life_value=life_value #英雄都有自己的生命值;def attack(self,enemy): #普通攻擊技能,enemy是敵人;enemy.life_value-=self.aggressivity #根據(jù)自己的攻擊力,攻擊敵人就減掉敵人的生命值。

實(shí)例出一個(gè)Riven來

>>> r1=Riven('銳雯雯')

交互:銳雯雯攻擊草叢倫,反之一樣

>>> g1.life_value 455 >>> r1.attack(g1) >>> g1.life_value 401

3.4 類名稱空間與對(duì)象/實(shí)例名稱空間

創(chuàng)建一個(gè)類就會(huì)創(chuàng)建一個(gè)類的名稱空間,用來存儲(chǔ)類中定義的所有名字,這些名字稱為類的屬性

而類有兩種屬性:數(shù)據(jù)屬性和函數(shù)屬性

其中類的數(shù)據(jù)屬性是共享給所有對(duì)象的

>>> id(r1.camp) #本質(zhì)就是在引用類的camp屬性,二者id一樣 4315241024 >>> id(Riven.camp) 4315241024

而類的函數(shù)屬性是綁定到所有對(duì)象的:

>>> id(r1.attack) 4302501512 >>> id(Riven.attack) 4315244200''' r1.attack就是在執(zhí)行Riven.attack的功能,python的class機(jī)制會(huì)將Riven的函數(shù)屬性attack綁定給r1,r1相當(dāng)于拿到了一個(gè)指針,指向Riven類的attack功能除此之外r1.attack()會(huì)將r1傳給attack的第一個(gè)參數(shù) '''

創(chuàng)建一個(gè)對(duì)象/實(shí)例就會(huì)創(chuàng)建一個(gè)對(duì)象/實(shí)例的名稱空間,存放對(duì)象/實(shí)例的名字,稱為對(duì)象/實(shí)例的屬性

在obj.name會(huì)先從obj自己的名稱空間里找name,找不到則去類中找,類也找不到就找父類...最后都找不到就拋出異常?

3.5 小結(jié)

瑞文

class Riven:camp='Noxus'def __init__(self,nickname,aggressivity=54,life_value=414,money=1001,armor=3):self.nickname=nicknameself.aggressivity=aggressivityself.life_value=life_valueself.money=moneyself.armor=armordef attack(self,enemy):damage_value=self.aggressivity-enemy.armorenemy.life_value-=damage_value

蓋倫

class Garen:camp='Demacia'def __init__(self,nickname,aggressivity=58,life_value=455,money=100,armor=10):self.nickname=nicknameself.aggressivity=aggressivityself.life_value=life_valueself.money=moneyself.armor=armordef attack(self,enemy):damage_value=self.aggressivity-enemy.armorenemy.life_value-=damage_value

定義裝備:

class BlackCleaver:def __init__(self,price=475,aggrev=9,life_value=100):self.price=priceself.aggrev=aggrevself.life_value=life_valuedef update(self,obj):obj.money-=self.price #減錢obj.aggressivity+=self.aggrev #加攻擊obj.life_value+=self.life_value #加生命值def fire(self,obj): #這是該裝備的主動(dòng)技能,噴火,燒死對(duì)方obj.life_value-=1000 #假設(shè)火燒的攻擊力是1000

測(cè)試交互

r1=Riven('草叢倫') g1=Garen('蓋文') b1=BlackCleaver()print(r1.aggressivity,r1.life_value,r1.money) #r1的攻擊力,生命值,護(hù)甲if r1.money > b1.price:r1.b1=b1b1.update(r1)print(r1.aggressivity,r1.life_value,r1.money) #r1的攻擊力,生命值,護(hù)甲print(g1.life_value) r1.attack(g1) #普通攻擊 print(g1.life_value) r1.b1.fire(g1) #用裝備攻擊 print(g1.life_value) #g1的生命值小于0就死了

按照這種思路一點(diǎn)一點(diǎn)的設(shè)計(jì)類和對(duì)象,最終你完全可以實(shí)現(xiàn)一個(gè)對(duì)戰(zhàn)類游戲。

四 繼承與派生

4.1 什么是繼承

繼承是一種創(chuàng)建新的類的方式,在python中,新建的類可以繼承自一個(gè)或者多個(gè)父類,原始類稱為基類或超類,新建的類稱為派生類或子類。

python中類的繼承分為:單繼承和多繼承

class ParentClass1: #定義父類passclass ParentClass2: #定義父類passclass SubClass1(ParentClass1): #單繼承,基類是ParentClass1,派生類是SubClasspassclass SubClass2(ParentClass1,ParentClass2): #python支持多繼承,用逗號(hào)分隔開多個(gè)繼承的類pass

查看繼承

>>> SubClass1.__bases__ (<class '__main__.ParentClass1'>,) >>> SubClass2.__bases__ (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)

提示:如果沒有指定基類,python的類會(huì)默認(rèn)繼承object類,object是所有python類的基類,它提供了一些常見方法(如__str__)的實(shí)現(xiàn)。

>>> ParentClass1.__bases__ (<class 'object'>,) >>> ParentClass2.__bases__ (<class 'object'>,)

4.2 繼承與抽象(先抽象再繼承)

抽象即抽取類似或者說比較像的部分。

抽象分成兩個(gè)層次:?

1.將奧巴馬和梅西這倆對(duì)象比較像的部分抽取成類;?

2.將人,豬,狗這三個(gè)類比較像的部分抽取成父類。

抽象最主要的作用是劃分類別(可以隔離關(guān)注點(diǎn),降低復(fù)雜度)

繼承:是基于抽象的結(jié)果,通過編程語(yǔ)言去實(shí)現(xiàn)它,肯定是先經(jīng)歷抽象這個(gè)過程,才能通過繼承的方式去表達(dá)出抽象的結(jié)構(gòu)。

抽象只是分析和設(shè)計(jì)的過程中,一個(gè)動(dòng)作或者說一種技巧,通過抽象可以得到類

4.3 繼承與重用性

==========================第一部分 例如貓可以:喵喵叫、吃、喝、拉、撒狗可以:汪汪叫、吃、喝、拉、撒如果我們要分別為貓和狗創(chuàng)建一個(gè)類,那么就需要為 貓 和 狗 實(shí)現(xiàn)他們所有的功能,偽代碼如下:#貓和狗有大量相同的內(nèi)容 class 貓:def 喵喵叫(self):print '喵喵叫'def 吃(self):# do somethingdef 喝(self):# do somethingdef 拉(self):# do somethingdef 撒(self):# do somethingclass 狗:def 汪汪叫(self):print '喵喵叫'def 吃(self):# do somethingdef 喝(self):# do somethingdef 拉(self):# do somethingdef 撒(self):# do something==========================第二部分 上述代碼不難看出,吃、喝、拉、撒是貓和狗都具有的功能,而我們卻分別的貓和狗的類中編寫了兩次。如果使用 繼承 的思想,如下實(shí)現(xiàn):動(dòng)物:吃、喝、拉、撒貓:喵喵叫(貓繼承動(dòng)物的功能)狗:汪汪叫(狗繼承動(dòng)物的功能)偽代碼如下: class 動(dòng)物:def 吃(self):# do somethingdef 喝(self):# do somethingdef 拉(self):# do somethingdef 撒(self):# do something# 在類后面括號(hào)中寫入另外一個(gè)類名,表示當(dāng)前類繼承另外一個(gè)類 class 貓(動(dòng)物):def 喵喵叫(self):print '喵喵叫'# 在類后面括號(hào)中寫入另外一個(gè)類名,表示當(dāng)前類繼承另外一個(gè)類 class 狗(動(dòng)物):def 汪汪叫(self):print '喵喵叫'==========================第三部分 #繼承的代碼實(shí)現(xiàn) class Animal:def eat(self):print("%s 吃 " %self.name)def drink(self):print ("%s 喝 " %self.name)def shit(self):print ("%s 拉 " %self.name)def pee(self):print ("%s 撒 " %self.name)class Cat(Animal):def __init__(self, name):self.name = nameself.breed = '貓'def cry(self):print('喵喵叫')class Dog(Animal):def __init__(self, name):self.name = nameself.breed='狗'def cry(self):print('汪汪叫')# ######### 執(zhí)行 #########c1 = Cat('小白家的小黑貓') c1.eat()c2 = Cat('小黑的小白貓') c2.drink()d1 = Dog('胖子家的小瘦狗') d1.eat() view code

在開發(fā)程序的過程中,如果我們定義了一個(gè)類A,然后又想新建立另外一個(gè)類B,但是類B的大部分內(nèi)容與類A的相同時(shí)

我們不可能從頭開始寫一個(gè)類B,這就用到了類的繼承的概念。

通過繼承的方式新建類B,讓B繼承A,B會(huì)‘遺傳’A的所有屬性(數(shù)據(jù)屬性和函數(shù)屬性),實(shí)現(xiàn)代碼重用

class Hero:def __init__(self,nickname,aggressivity,life_value):self.nickname=nicknameself.aggressivity=aggressivityself.life_value=life_valuedef move_forward(self):print('%s move forward' %self.nickname)def move_backward(self):print('%s move backward' %self.nickname)def move_left(self):print('%s move forward' %self.nickname)def move_right(self):print('%s move forward' %self.nickname)def attack(self,enemy):enemy.life_value-=self.aggressivity class Garen(Hero):passclass Riven(Hero):passg1=Garen('草叢倫',100,300) r1=Riven('銳雯雯',57,200)print(g1.life_value) r1.attack(g1) print(g1.life_value)''' 運(yùn)行結(jié)果 300 243 ''' view code

提示:用已經(jīng)有的類建立一個(gè)新的類,這樣就重用了已經(jīng)有的軟件中的一部分設(shè)置大部分,大大生了編程工作量,這就是常說的軟件重用,不僅可以重用自己的類,也可以繼承別人的,比如標(biāo)準(zhǔn)庫(kù),來定制新的數(shù)據(jù)類型,這樣就是大大縮短了軟件開發(fā)周期,對(duì)大型軟件開發(fā)來說,意義重大.

注意:像g1.life_value之類的屬性引用,會(huì)先從實(shí)例中找life_value然后去類中找,然后再去父類中找...直到最頂級(jí)的父類。

當(dāng)然子類也可以添加自己新的屬性或者在自己這里重新定義這些屬性(不會(huì)影響到父類),需要注意的是,一旦重新定義了自己的屬性且與父類重名,那么調(diào)用新增的屬性時(shí),就以自己為準(zhǔn)了。

class Riven(Hero):camp='Noxus'def attack(self,enemy): #在自己這里定義新的attack,不再使用父類的attack,且不會(huì)影響父類print('from riven')def fly(self): #在自己這里定義新的print('%s is flying' %self.nickname) view code

在子類中,新建的重名的函數(shù)屬性,在編輯函數(shù)內(nèi)功能的時(shí)候,有可能需要重用父類中重名的那個(gè)函數(shù)功能,應(yīng)該是用調(diào)用普通函數(shù)的方式,即:類名.func(),此時(shí)就與調(diào)用普通函數(shù)無(wú)異了,因此即便是self參數(shù)也要為其傳值

class Riven(Hero):camp='Noxus'def __init__(self,nickname,aggressivity,life_value,skin):Hero.__init__(self,nickname,aggressivity,life_value) #調(diào)用父類功能self.skin=skin #新屬性def attack(self,enemy): #在自己這里定義新的attack,不再使用父類的attack,且不會(huì)影響父類Hero.attack(self,enemy) #調(diào)用功能print('from riven')def fly(self): #在自己這里定義新的print('%s is flying' %self.nickname)r1=Riven('銳雯雯',57,200,'比基尼') r1.fly() print(r1.skin)''' 運(yùn)行結(jié)果 銳雯雯 is flying 比基尼''' view code

4.4 組合與重用性

軟件重用的重要方式除了繼承之外還有另外一種方式,即:組合

組合指的是,在一個(gè)類中以另外一個(gè)類的對(duì)象作為數(shù)據(jù)屬性,稱為類的組合

其實(shí)早在3.5小節(jié)中我們就體會(huì)了組合的用法,比如一個(gè)英雄有一個(gè)裝備

>>> class Equip: #武器裝備類 ... def fire(self): ... print('release Fire skill') ... >>> class Riven: #英雄Riven的類,一個(gè)英雄需要有裝備,因而需要組合Equip類 ... camp='Noxus' ... def __init__(self,nickname): ... self.nickname=nickname ... self.equip=Equip() #用Equip類產(chǎn)生一個(gè)裝備,賦值給實(shí)例的equip屬性 ... >>> r1=Riven('銳雯雯') >>> r1.equip.fire() #可以使用組合的類產(chǎn)生的對(duì)象所持有的方法 release Fire skill view code

組合與繼承都是有效地利用已有類的資源的重要方式。但是二者的概念和使用場(chǎng)景皆不同,

1.繼承的方式

通過繼承建立了派生類與基類之間的關(guān)系,它是一種'是'的關(guān)系,比如白馬是馬,人是動(dòng)物。

當(dāng)類之間有很多相同的功能,提取這些共同的功能做成基類,用繼承比較好,比如教授是老師

>>> class Teacher: ... def __init__(self,name,gender): ... self.name=name ... self.gender=gender ... def teach(self): ... print('teaching') ... >>> >>> class Professor(Teacher): ... pass ... >>> p1=Professor('egon','male') >>> p1.teach() teaching view code

2.組合的方式

用組合的方式建立了類與組合的類之間的關(guān)系,它是一種‘有’的關(guān)系,比如教授有生日,教授教python課程

class BirthDate:def __init__(self,year,month,day):self.year=yearself.month=monthself.day=dayclass Couse:def __init__(self,name,price,period):self.name=nameself.price=priceself.period=periodclass Teacher:def __init__(self,name,gender):self.name=nameself.gender=genderdef teach(self):print('teaching') class Professor(Teacher):def __init__(self,name,gender,birth,course):Teacher.__init__(self,name,gender)self.birth=birthself.course=coursep1=Professor('egon','male',BirthDate('1995','1','27'),Couse('python','28000','4 months'))print(p1.birth.year,p1.birth.month,p1.birth.day) print(p1.course.name,p1.course.price,p1.course.period) ''' 運(yùn)行結(jié)果: 1995 1 27 python 28000 4 months ''' view code

當(dāng)類之間有顯著不同,并且較小的類是較大的類所需要的組件時(shí),用組合比較好

4.5 接口與歸一化設(shè)計(jì)

1.什么是接口

=================第一部分:Java 語(yǔ)言中的接口很好的展現(xiàn)了接口的含義: IAnimal.java /* * Java的Interface很好的體現(xiàn)了我們前面分析的接口的特征: * 1)是一組功能的集合,而不是一個(gè)功能 * 2)接口的功能用于交互,所有的功能都是public,即別的對(duì)象可操作 * 3)接口只定義函數(shù),但不涉及函數(shù)實(shí)現(xiàn) * 4)這些功能是相關(guān)的,都是動(dòng)物相關(guān)的功能,但光合作用就不適宜放到IAnimal里面了 */package com.oo.demo; public interface IAnimal {public void eat();public void run();public void sleep();public void speak(); }=================第二部分:Pig.java:豬”的類設(shè)計(jì),實(shí)現(xiàn)了IAnnimal接口 package com.oo.demo; public class Pig implements IAnimal{ //如下每個(gè)函數(shù)都需要詳細(xì)實(shí)現(xiàn)public void eat(){System.out.println("Pig like to eat grass");}public void run(){System.out.println("Pig run: front legs, back legs");}public void sleep(){System.out.println("Pig sleep 16 hours every day");}public void speak(){System.out.println("Pig can not speak"); } }=================第三部分:Person2.java /* *實(shí)現(xiàn)了IAnimal的“人”,有幾點(diǎn)說明一下: * 1)同樣都實(shí)現(xiàn)了IAnimal的接口,但“人”和“豬”的實(shí)現(xiàn)不一樣,為了避免太多代碼導(dǎo)致影響閱讀,這里的代碼簡(jiǎn)化成一行,但輸出的內(nèi)容不一樣,實(shí)際項(xiàng)目中同一接口的同一功能點(diǎn),不同的類實(shí)現(xiàn)完全不一樣 * 2)這里同樣是“人”這個(gè)類,但和前面介紹類時(shí)給的類“Person”完全不一樣,這是因?yàn)橥瑯拥倪壿嫺拍?在不同的應(yīng)用場(chǎng)景下,具備的屬性和功能是完全不一樣的 */package com.oo.demo; public class Person2 implements IAnimal {public void eat(){System.out.println("Person like to eat meat");}public void run(){System.out.println("Person run: left leg, right leg");}public void sleep(){System.out.println("Person sleep 8 hours every dat");}public void speak(){System.out.println("Hellow world, I am a person");} }=================第四部分:Tester03.java package com.oo.demo;public class Tester03 {public static void main(String[] args) {System.out.println("===This is a person===");IAnimal person = new Person2();person.eat();person.run();person.sleep();person.speak();System.out.println("\n===This is a pig===");IAnimal pig = new Pig();pig.eat();pig.run();pig.sleep();pig.speak();} } view code

繼承有兩種用途:

一:繼承基類的方法,并且做出自己的改變或者擴(kuò)展(代碼重用)

二:聲明某個(gè)子類兼容于某基類,定義一個(gè)接口類Interface,接口類中定義了一些接口名(就是函數(shù)名)且并未實(shí)現(xiàn)接口的功能,子類繼承接口類,并且實(shí)現(xiàn)接口中的功能

class Interface:#定義接口Interface類來模仿接口的概念,python中壓根就沒有interface關(guān)鍵字來定義一個(gè)接口。def read(self): #定接口函數(shù)readpassdef write(self): #定義接口函數(shù)writepassclass Txt(Interface): #文本,具體實(shí)現(xiàn)read和writedef read(self):print('文本數(shù)據(jù)的讀取方法')def write(self):print('文本數(shù)據(jù)的讀取方法')class Sata(Interface): #磁盤,具體實(shí)現(xiàn)read和writedef read(self):print('硬盤數(shù)據(jù)的讀取方法')def write(self):print('硬盤數(shù)據(jù)的讀取方法')class Process(All_file):def read(self):print('進(jìn)程數(shù)據(jù)的讀取方法')def write(self):print('進(jìn)程數(shù)據(jù)的讀取方法') view code

實(shí)踐中,繼承的第一種含義意義并不很大,甚至常常是有害的。因?yàn)樗沟米宇惻c基類出現(xiàn)強(qiáng)耦合。

繼承的第二種含義非常重要。它又叫“接口繼承”。
接口繼承實(shí)質(zhì)上是要求“做出一個(gè)良好的抽象,這個(gè)抽象規(guī)定了一個(gè)兼容接口,使得外部調(diào)用者無(wú)需關(guān)心具體細(xì)節(jié),可一視同仁的處理實(shí)現(xiàn)了特定接口的所有對(duì)象”——這在程序設(shè)計(jì)上,叫做歸一化。

歸一化使得高層的外部使用者可以不加區(qū)分的處理所有接口兼容的對(duì)象集合——就好象linux的泛文件概念一樣,所有東西都可以當(dāng)文件處理,不必關(guān)心它是內(nèi)存、磁盤、網(wǎng)絡(luò)還是屏幕(當(dāng)然,對(duì)底層設(shè)計(jì)者,當(dāng)然也可以區(qū)分出“字符設(shè)備”和“塊設(shè)備”,然后做出針對(duì)性的設(shè)計(jì):細(xì)致到什么程度,視需求而定)。

在python中根本就沒有一個(gè)叫做interface的關(guān)鍵字,上面的代碼只是看起來像接口,其實(shí)并沒有起到接口的作用,子類完全可以不用去實(shí)現(xiàn)接口 ,如果非要去模仿接口的概念,可以借助第三方模塊:

http://pypi.python.org/pypi/zope.interface

twisted的twisted\internet\interface.py里使用zope.interface

文檔https://zopeinterface.readthedocs.io/en/latest/

2. 為何要用接口

接口提取了一群類共同的函數(shù),可以把接口當(dāng)做一個(gè)函數(shù)的集合。

然后讓子類去實(shí)現(xiàn)接口中的函數(shù)。

這么做的意義在于歸一化,什么叫歸一化,就是只要是基于同一個(gè)接口實(shí)現(xiàn)的類,那么所有的這些類產(chǎn)生的對(duì)象在使用時(shí),從用法上來說都一樣。

歸一化,讓使用者無(wú)需關(guān)心對(duì)象的類是什么,只需要的知道這些對(duì)象都具備某些功能就可以了,這極大地降低了使用者的使用難度。

比如:我們定義一個(gè)動(dòng)物接口,接口里定義了有跑、吃、呼吸等接口函數(shù),這樣老鼠的類去實(shí)現(xiàn)了該接口,松鼠的類也去實(shí)現(xiàn)了該接口,由二者分別產(chǎn)生一只老鼠和一只松鼠送到你面前,即便是你分別不到底哪只是什么鼠你肯定知道他倆都會(huì)跑,都會(huì)吃,都能呼吸。

再比如:我們有一個(gè)汽車接口,里面定義了汽車所有的功能,然后由本田汽車的類,奧迪汽車的類,大眾汽車的類,他們都實(shí)現(xiàn)了汽車接口,這樣就好辦了,大家只需要學(xué)會(huì)了怎么開汽車,那么無(wú)論是本田,還是奧迪,還是大眾我們都會(huì)開了,開的時(shí)候根本無(wú)需關(guān)心我開的是哪一類車,操作手法(函數(shù)調(diào)用)都一樣

4.6 抽象類

1 什么是抽象類

??? 與java一樣,python也有抽象類的概念但是同樣需要借助模塊實(shí)現(xiàn),抽象類是一個(gè)特殊的類,它的特殊之處在于只能被繼承,不能被實(shí)例化

2 為什么要有抽象類

??? 如果說類是從一堆對(duì)象中抽取相同的內(nèi)容而來的,那么抽象類是從一堆中抽取相同的內(nèi)容而來的,內(nèi)容包括數(shù)據(jù)屬性和函數(shù)屬性。

  比如我們有香蕉的類,有蘋果的類,有桃子的類,從這些類抽取相同的內(nèi)容就是水果這個(gè)抽象的類,你吃水果時(shí),要么是吃一個(gè)具體的香蕉,要么是吃一個(gè)具體的桃子。。。。。。你永遠(yuǎn)無(wú)法吃到一個(gè)叫做水果的東西。

??? 從設(shè)計(jì)角度去看,如果類是從現(xiàn)實(shí)對(duì)象抽象而來的,那么抽象類就是基于類抽象而來的。

  從實(shí)現(xiàn)角度來看,抽象類與普通類的不同之處在于:抽象類中只能有抽象方法(沒有實(shí)現(xiàn)功能),該類不能被實(shí)例化,只能被繼承,且子類必須實(shí)現(xiàn)抽象方法。這一點(diǎn)與接口有點(diǎn)類似,但其實(shí)是不同的,即將揭曉答案

3. 在python中實(shí)現(xiàn)抽象類

#_*_coding:utf-8_*_ #一切皆文件 import abc #利用abc模塊實(shí)現(xiàn)抽象類class All_file(metaclass=abc.ABCMeta):all_type='file'@abc.abstractmethod #定義抽象方法,無(wú)需實(shí)現(xiàn)功能def read(self):'子類必須定義讀功能'pass@abc.abstractmethod #定義抽象方法,無(wú)需實(shí)現(xiàn)功能def write(self):'子類必須定義寫功能'pass# class Txt(All_file): # pass # # t1=Txt() #報(bào)錯(cuò),子類沒有定義抽象方法class Txt(All_file): #子類繼承抽象類,但是必須定義read和write方法def read(self):print('文本數(shù)據(jù)的讀取方法')def write(self):print('文本數(shù)據(jù)的讀取方法')class Sata(All_file): #子類繼承抽象類,但是必須定義read和write方法def read(self):print('硬盤數(shù)據(jù)的讀取方法')def write(self):print('硬盤數(shù)據(jù)的讀取方法')class Process(All_file): #子類繼承抽象類,但是必須定義read和write方法def read(self):print('進(jìn)程數(shù)據(jù)的讀取方法')def write(self):print('進(jìn)程數(shù)據(jù)的讀取方法')wenbenwenjian=Txt()yingpanwenjian=Sata()jinchengwenjian=Process()#這樣大家都是被歸一化了,也就是一切皆文件的思想 wenbenwenjian.read() yingpanwenjian.write() jinchengwenjian.read()print(wenbenwenjian.all_type) print(yingpanwenjian.all_type) print(jinchengwenjian.all_type) view code

4. 抽象類與接口

抽象類的本質(zhì)還是類,指的是一組類的相似性,包括數(shù)據(jù)屬性(如all_type)和函數(shù)屬性(如read、write),而接口只強(qiáng)調(diào)函數(shù)屬性的相似性。

抽象類是一個(gè)介于類和接口直接的一個(gè)概念,同時(shí)具備類和接口的部分特性,可以用來實(shí)現(xiàn)歸一化設(shè)計(jì)

4.7 繼承實(shí)現(xiàn)的原理(繼承順序)

1 繼承順序

class A(object):def test(self):print('from A')class B(A):def test(self):print('from B')class C(A):def test(self):print('from C')class D(B):def test(self):print('from D')class E(C):def test(self):print('from E')class F(D,E):# def test(self):# print('from F')pass f1=F() f1.test() print(F.__mro__) #只有新式才有這個(gè)屬性可以查看線性列表,經(jīng)典類沒有這個(gè)屬性#新式類繼承順序:F->D->B->E->C->A #經(jīng)典類繼承順序:F->D->B->A->E->C #python3中統(tǒng)一都是新式類 #pyhon2中才分新式類與經(jīng)典類 view code

2 繼承原理(python如何實(shí)現(xiàn)的繼承)

python到底是如何實(shí)現(xiàn)繼承的,對(duì)于你定義的每一個(gè)類,python會(huì)計(jì)算出一個(gè)方法解析順序(MRO)列表,這個(gè)MRO列表就是一個(gè)簡(jiǎn)單的所有基類的線性順序列表,例如

>>> F.mro() #等同于F.__mro__ [<class '__main__.F'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>] view code

為了實(shí)現(xiàn)繼承,python會(huì)在MRO列表上從左到右開始查找基類,直到找到第一個(gè)匹配這個(gè)屬性的類為止。
而這個(gè)MRO列表的構(gòu)造是通過一個(gè)C3線性化算法來實(shí)現(xiàn)的。我們不去深究這個(gè)算法的數(shù)學(xué)原理,它實(shí)際上就是合并所有父類的MRO列表并遵循如下三條準(zhǔn)則:
1.子類會(huì)先于父類被檢查
2.多個(gè)父類會(huì)根據(jù)它們?cè)诹斜碇械捻樞虮粰z查
3.如果對(duì)下一個(gè)類存在兩個(gè)合法的選擇,選擇第一個(gè)父類

4.8 子類中調(diào)用父類方法

子類繼承了父類的方法,然后想進(jìn)行修改,注意了是基于原有的基礎(chǔ)上修改,那么就需要在子類中調(diào)用父類的方法

方法一:父類名.父類方法()

#_*_coding:utf-8_*_ class Vehicle: #定義交通工具類Country='China'def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print('開動(dòng)啦...')class Subway(Vehicle): #地鐵def __init__(self,name,speed,load,power,line):Vehicle.__init__(self,name,speed,load,power)self.line=linedef run(self):print('地鐵%s號(hào)線歡迎您' %self.line)Vehicle.run(self)line13=Subway('中國(guó)地鐵','180m/s','1000人/箱','電',13) line13.run() view code

方法二:super()

class Vehicle: #定義交通工具類Country='China'def __init__(self,name,speed,load,power):self.name=nameself.speed=speedself.load=loadself.power=powerdef run(self):print('開動(dòng)啦...')class Subway(Vehicle): #地鐵def __init__(self,name,speed,load,power,line):#super(Subway,self) 就相當(dāng)于實(shí)例本身 在python3中super()等同于super(Subway,self)super().__init__(name,speed,load,power)self.line=linedef run(self):print('地鐵%s號(hào)線歡迎您' %self.line)super(Subway,self).run()class Mobike(Vehicle):#摩拜單車passline13=Subway('中國(guó)地鐵','180m/s','1000人/箱','電',13) line13.run() view code

不用super引發(fā)的慘案

#每個(gè)類中都繼承了且重寫了父類的方法 class A:def __init__(self):print('A的構(gòu)造方法') class B(A):def __init__(self):print('B的構(gòu)造方法')A.__init__(self)class C(A):def __init__(self):print('C的構(gòu)造方法')A.__init__(self)class D(B,C):def __init__(self):print('D的構(gòu)造方法')B.__init__(self)C.__init__(self)pass f1=D()print(D.__mro__) #python2中沒有這個(gè)屬性 view code

當(dāng)你使用super()函數(shù)時(shí),Python會(huì)在MRO列表上繼續(xù)搜索下一個(gè)類。只要每個(gè)重定義的方法統(tǒng)一使用super()并只調(diào)用它一次,那么控制流最終會(huì)遍歷完整個(gè)MRO列表,每個(gè)方法也只會(huì)被調(diào)用一次

注意注意注意:使用super調(diào)用的所有屬性,都是從MRO列表當(dāng)前的位置往后找,千萬(wàn)不要通過看代碼去找繼承關(guān)系,一定要看MRO列表

#每個(gè)類中都繼承了且重寫了父類的方法 class A:def __init__(self):print('A的構(gòu)造方法') class B(A):def __init__(self):print('B的構(gòu)造方法')super(B,self).__init__()class C(A):def __init__(self):print('C的構(gòu)造方法')super(C,self).__init__()class D(B,C):def __init__(self):print('D的構(gòu)造方法')super(D,self).__init__()f1=D()print(D.__mro__) #python2中沒有這個(gè)屬性 view code

五 多態(tài)與多態(tài)性

5.1 多態(tài)

多態(tài)指的是一類事物有多種形態(tài),(一個(gè)抽象類有多個(gè)子類,因而多態(tài)的概念依賴于繼承)

1. 序列類型有多種形態(tài):字符串,列表,元組。

2. 動(dòng)物有多種形態(tài):人,狗,豬

import abc class Animal(metaclass=abc.ABCMeta): #同一類事物:動(dòng)物@abc.abstractmethoddef talk(self):passclass People(Animal): #動(dòng)物的形態(tài)之一:人def talk(self):print('say hello')class Dog(Animal): #動(dòng)物的形態(tài)之二:狗def talk(self):print('say wangwang')class Pig(Animal): #動(dòng)物的形態(tài)之三:豬def talk(self):print('say aoao') view code

3. 文件有多種形態(tài):文件文件,可執(zhí)行文件

import abc class File(metaclass=abc.ABCMeta): #同一類事物:文件@abc.abstractmethoddef click(self):passclass Text(File): #文件的形態(tài)之一:文本文件def click(self):print('open file')class ExeFile(File): #文件的形態(tài)之二:可執(zhí)行文件def click(self):print('execute file') view code

5.2 多態(tài)性

一 什么是多態(tài)性(請(qǐng)務(wù)必注意注意注意:多態(tài)與多態(tài)性是兩種概念。)

多態(tài)性是指具有不同功能的函數(shù)可以使用相同的函數(shù)名,這樣就可以用一個(gè)函數(shù)名調(diào)用不同內(nèi)容的函數(shù)。

在面向?qū)ο蠓椒ㄖ幸话闶沁@樣表述多態(tài)性:向不同的對(duì)象發(fā)送同一條消息,不同的對(duì)象在接收時(shí)會(huì)產(chǎn)生不同的行為(即方法)。也就是說,每個(gè)對(duì)象可以用自己的方式去響應(yīng)共同的消息。所謂消息,就是調(diào)用函數(shù),不同的行為就是指不同的實(shí)現(xiàn),即執(zhí)行不同的函數(shù)。

多態(tài)性分為靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性

靜態(tài)多態(tài)性:如任何類型都可以用運(yùn)算符+進(jìn)行運(yùn)算

動(dòng)態(tài)多態(tài)性:如下

1.?

2.

>>> def func(animal): #參數(shù)animal就是對(duì)態(tài)性的體現(xiàn) ... animal.talk() ... >>> people1=People() #產(chǎn)生一個(gè)人的對(duì)象 >>> pig1=Pig() #產(chǎn)生一個(gè)豬的對(duì)象 >>> dog1=Dog() #產(chǎn)生一個(gè)狗的對(duì)象 >>> func(people1) say hello >>> func(pig1) say aoao >>> func(dog1) say wangwang view code

3.?

>>> def func(f): ... f.click() ... >>> t1=Text() >>> e1=ExeFile() >>> func(t1) open file >>> func(e1) execute file view code

綜上我們也可以說,多態(tài)性是‘一個(gè)接口(函數(shù)func),多種實(shí)現(xiàn)(如f.click())’

二 為什么要用多態(tài)性(多態(tài)性的好處)

其實(shí)大家從上面多態(tài)性的例子可以看出,我們并沒有增加什么新的知識(shí),也就是說python本身就是支持多態(tài)性的,這么做的好處是什么呢?

1.增加了程序的靈活性

  以不變應(yīng)萬(wàn)變,不論對(duì)象千變?nèi)f化,使用者都是同一種形式去調(diào)用,如func(animal)

2.增加了程序額可擴(kuò)展性

通過繼承animal類創(chuàng)建了一個(gè)新的類,使用者無(wú)需更改自己的代碼,還是用func(animal)去調(diào)用?

>>> class Cat(Animal): #屬于動(dòng)物的另外一種形態(tài):貓 ... def talk(self): ... print('say miao') ... >>> def func(animal): #對(duì)于使用者來說,自己的代碼根本無(wú)需改動(dòng) ... animal.talk() ... >>> cat1=Cat() #實(shí)例出一只貓 >>> func(cat1) #甚至連調(diào)用方式也無(wú)需改變,就能調(diào)用貓的talk功能 say miao''' 這樣我們新增了一個(gè)形態(tài)Cat,由Cat類產(chǎn)生的實(shí)例cat1,使用者可以在完全不需要修改自己代碼的情況下。使用和人、狗、豬一樣的方式調(diào)用cat1的talk方法,即func(cat1) ''' view code

六 封裝

從封裝本身的意思去理解,封裝就好像是拿來一個(gè)麻袋,把小貓,小狗,小王八,還有alex一起裝進(jìn)麻袋,然后把麻袋封上口子。但其實(shí)這種理解相當(dāng)片面

??? 首先我們要了解

6.1 要封裝什么

你錢包的有多少錢(數(shù)據(jù)的封裝)

你的性取向(數(shù)據(jù)的封裝)

你撒尿的具體功能是怎么實(shí)現(xiàn)的(方法的封裝)

6.2 為什么要封裝

封裝數(shù)據(jù)的主要原因是:保護(hù)隱私(作為男人的你,臉上就寫著:我喜歡男人,你害怕么?)

封裝方法的主要原因是:隔離復(fù)雜度(快門就是傻瓜相機(jī)為傻瓜們提供的方法,該方法將內(nèi)部復(fù)雜的照相功能都隱藏起來了,比如你不必知道你自己的尿是怎么流出來的,你直接掏出自己的接口就能用尿這個(gè)功能)

你的身體沒有一處不體現(xiàn)著封裝的概念:你的身體把膀胱尿道等等這些尿的功能隱藏了起來,然后為你提供一個(gè)尿的接口就可以了(接口就是你的。。。,),你總不能把膀胱掛在身體外面,上廁所的時(shí)候就跟別人炫耀:hi,man,你瞅我的膀胱,看看我是怎么尿的。還有你的頭把你的腦子封裝到了腦殼里,然后提供了眼睛這個(gè)接口....

提示:在編程語(yǔ)言里,對(duì)外提供的接口,就是函數(shù),稱為接口函數(shù),這與接口的概念還不一樣,接口代表一組接口函數(shù)的集合體,后續(xù)我們將介紹到。

6.3 封裝分為兩個(gè)層面

封裝其實(shí)分為兩個(gè)層面,但很多資料中都混在一起去說,很容易讓初學(xué)者懵逼:

第一個(gè)層面的封裝(什么都不用做):創(chuàng)建類和對(duì)象會(huì)分別創(chuàng)建二者的名稱空間,我們只能用類名.或者obj.的方式去訪問里面的名字,這本身就是一種封裝

>>> r1.nickname '草叢倫' >>> Riven.camp 'Noxus'

注意:對(duì)于這一層面的封裝(隱藏),類名.和實(shí)例名.就是訪問隱藏屬性的接口(或者叫入口)

第二個(gè)層面的封裝:類中把某些屬性和方法隱藏起來(或者說定義成私有的),只在類的內(nèi)部使用、外部無(wú)法訪問,或者留下少量接口(函數(shù))供外部訪問。

在python中用雙下劃線的方式實(shí)現(xiàn)隱藏屬性(設(shè)置成私有的)

類中所有雙下劃線開頭的名稱如__x都會(huì)自動(dòng)變形成:_類名__x的形式:

class A:__N=0 #類的數(shù)據(jù)屬性就應(yīng)該是共享的,但是語(yǔ)法上是可以把類的數(shù)據(jù)屬性設(shè)置成私有的如__N,會(huì)變形為_A__Ndef __init__(self):self.__X=10 #變形為self._A__Xdef __foo(self): #變形為_A__fooprint('from A')def bar(self):self.__foo() #只有在類內(nèi)部才可以通過__foo的形式訪問到.

這種自動(dòng)變形的特點(diǎn):

1.類中定義的__x只能在內(nèi)部使用,如self.__x,引用的就是變形的結(jié)果

2.這種變形其實(shí)正是針對(duì)外部的變形,在外部是無(wú)法通過__x這個(gè)名字訪問到的。

2.在子類定義的__x不會(huì)覆蓋在父類定義的__x,因?yàn)樽宇愔凶冃纬闪?#xff1a;_子類名__x,而父類中變形成了:_父類名__x,即雙下滑線開頭的屬性在繼承給子類時(shí),子類是無(wú)法覆蓋的。

注意:對(duì)于這一層面的封裝(隱藏),我們需要在類中定義一個(gè)函數(shù)(接口函數(shù))在它內(nèi)部訪問被隱藏的屬性,然后外部就可以使用了

也可以用6.4所講的特性property來解決,即將介紹

? 這種變形需要注意的問題是:

1.這種機(jī)制也并沒有真正意義上限制我們從外部直接訪問屬性,知道了類名和屬性名就可以拼出名字:_類名__屬性,然后就可以訪問了,如a._A__N

>>> a=A() >>> a._A__N 0 >>> a._A__X 10 >>> A._A__N 0

2.變形的過程只在類的定義是發(fā)生一次,在定義后的賦值操作,不會(huì)變形

3.在繼承中,父類如果不想讓子類覆蓋自己的方法,可以將方法定義為私有的

#正常情況 >>> class A: ... def fa(self): ... print('from A') ... def test(self): ... self.fa() ... >>> class B(A): ... def fa(self): ... print('from B') ... >>> b=B() >>> b.test() from B #把fa定義成私有的,即__fa >>> class A: ... def __fa(self): #在定義時(shí)就變形為_A__fa ... print('from A') ... def test(self): ... self.__fa() #只會(huì)與自己所在的類為準(zhǔn),即調(diào)用_A__fa ... >>> class B(A): ... def __fa(self): ... print('from B') ... >>> b=B() >>> b.test() from A

python并不會(huì)真的阻止你訪問私有的屬性,模塊也遵循這種約定,如果模塊名以單下劃線開頭,那么from module import *時(shí)不能被導(dǎo)入,但是你from module import _private_module依然是可以導(dǎo)入的

其實(shí)很多時(shí)候你去調(diào)用一個(gè)模塊的功能時(shí)會(huì)遇到單下劃線開頭的(socket._socket,sys._home,sys._clear_type_cache),這些都是私有的,原則上是供內(nèi)部調(diào)用的,作為外部的你,一意孤行也是可以用的,只不過顯得稍微傻逼一點(diǎn)點(diǎn)

6.4 特性(property)

1 什么是特性property

property是一種特殊的屬性,訪問它時(shí)會(huì)執(zhí)行一段功能(函數(shù))然后返回值

import math class Circle:def __init__(self,radius): #圓的半徑radiusself.radius=radius@propertydef area(self):return math.pi * self.radius**2 #計(jì)算面積@propertydef perimeter(self):return 2*math.pi*self.radius #計(jì)算周長(zhǎng)c=Circle(10) print(c.radius) print(c.area) #可以向訪問數(shù)據(jù)屬性一樣去訪問area,會(huì)觸發(fā)一個(gè)函數(shù)的執(zhí)行,動(dòng)態(tài)計(jì)算出一個(gè)值 print(c.perimeter) #同上 ''' 輸出結(jié)果: 10 314.1592653589793 62.83185307179586 '''

注意:此時(shí)的特性arear和perimeter不能被賦值

c.area=3 #為特性area賦值 ''' 拋出異常: AttributeError: can't set attribute '''

2 為什么要用property

將一個(gè)類的函數(shù)定義成特性以后,對(duì)象再去使用的時(shí)候obj.name,根本無(wú)法察覺自己的name是執(zhí)行了一個(gè)函數(shù)然后計(jì)算出來的,這種特性的使用方式遵循了統(tǒng)一訪問的原則

除此之外,看下

ps:面向?qū)ο蟮姆庋b有三種方式: 【public】 這種其實(shí)就是不封裝,是對(duì)外公開的 【protected】 這種封裝方式對(duì)外不公開,但對(duì)朋友(friend)或者子類(形象的說法是“兒子”,但我不知道為什么大家 不說“女兒”,就像“parent”本來是“父母”的意思,但中文都是叫“父類”)公開 【private】 這種封裝對(duì)誰(shuí)都不公開

python并沒有在語(yǔ)法上把它們?nèi)齻€(gè)內(nèi)建到自己的class機(jī)制中,在C++里一般會(huì)將所有的所有的數(shù)據(jù)都設(shè)置為私有的,然后提供set和get方法(接口)去設(shè)置和獲取,在python中通過property方法可以實(shí)現(xiàn)

class Foo:def __init__(self,val):self.__NAME=val #將所有的數(shù)據(jù)屬性都隱藏起來@propertydef name(self):return self.__NAME #obj.name訪問的是self.__NAME(這也是真實(shí)值的存放位置)@name.setterdef name(self,value):if not isinstance(value,str): #在設(shè)定值之前進(jìn)行類型檢查raise TypeError('%s must be str' %value)self.__NAME=value #通過類型檢查后,將值value存放到真實(shí)的位置self.__NAME@name.deleterdef name(self):raise TypeError('Can not delete')f=Foo('egon') print(f.name) # f.name=10 #拋出異常'TypeError: 10 must be str' del f.name #拋出異常'TypeError: Can not delete view code class Foo:def __init__(self,val):self.__NAME=val #將所有的數(shù)據(jù)屬性都隱藏起來def getname(self):return self.__NAME #obj.name訪問的是self.__NAME(這也是真實(shí)值的存放位置)def setname(self,value):if not isinstance(value,str): #在設(shè)定值之前進(jìn)行類型檢查raise TypeError('%s must be str' %value)self.__NAME=value #通過類型檢查后,將值value存放到真實(shí)的位置self.__NAMEdef delname(self):raise TypeError('Can not delete')name=property(getname,setname,delname) #不如裝飾器的方式清晰 view code

6.5 封裝與擴(kuò)展性

封裝在于明確區(qū)分內(nèi)外,使得類實(shí)現(xiàn)者可以修改封裝內(nèi)的東西而不影響外部調(diào)用者的代碼;而外部使用用者只知道一個(gè)接口(函數(shù)),只要接口(函數(shù))名、參數(shù)不變,使用者的代碼永遠(yuǎn)無(wú)需改變。這就提供一個(gè)良好的合作基礎(chǔ)——或者說,只要接口這個(gè)基礎(chǔ)約定不變,則代碼改變不足為慮。

#類的設(shè)計(jì)者 class Room:def __init__(self,name,owner,width,length,high):self.name=nameself.owner=ownerself.__width=widthself.__length=lengthself.__high=highdef tell_area(self): #對(duì)外提供的接口,隱藏了內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),此時(shí)我們想求的是面積return self.__width * self.__length view code #使用者 >>> r1=Room('臥室','egon',20,20,20) >>> r1.tell_area() #使用者調(diào)用接口tell_area 400 view code #類的設(shè)計(jì)者,輕松的擴(kuò)展了功能,而類的使用者完全不需要改變自己的代碼 class Room:def __init__(self,name,owner,width,length,high):self.name=nameself.owner=ownerself.__width=widthself.__length=lengthself.__high=highdef tell_area(self): #對(duì)外提供的接口,隱藏內(nèi)部實(shí)現(xiàn),此時(shí)我們想求的是體積,內(nèi)部邏輯變了,只需求修該下列一行就可以很簡(jiǎn)答的實(shí)現(xiàn),而且外部調(diào)用感知不到,仍然使用該方法,但是功能已經(jīng)變了return self.__width * self.__length * self.__high view code

對(duì)于仍然在使用tell_area接口的人來說,根本無(wú)需改動(dòng)自己的代碼,就可以用上新功能

>>> r1.tell_area() 8000

七 靜態(tài)方法和類方法

通常情況下,在類中定義的所有函數(shù)(注意了,這里說的就是所有,跟self啥的沒關(guān)系,self也只是一個(gè)再普通不過的參數(shù)而已)都是對(duì)象的綁定方法,對(duì)象在調(diào)用綁定方法時(shí)會(huì)自動(dòng)將自己作為參數(shù)傳遞給方法的第一個(gè)參數(shù)。除此之外還有兩種常見的方法:靜態(tài)方法和類方法,二者是為類量身定制的,但是實(shí)例非要使用,也不會(huì)報(bào)錯(cuò),后續(xù)將介紹。

1 靜態(tài)方法

是一種普通函數(shù),位于類定義的命名空間中,不會(huì)對(duì)任何實(shí)例類型進(jìn)行操作,python為我們內(nèi)置了函數(shù)staticmethod來把類中的函數(shù)定義成靜態(tài)方法

class Foo:def spam(x,y,z): #類中的一個(gè)函數(shù),千萬(wàn)不要懵逼,self和x啥的沒有不同都是參數(shù)名print(x,y,z)spam=staticmethod(spam) #把spam函數(shù)做成靜態(tài)方法

基于之前所學(xué)裝飾器的知識(shí),@staticmethod 等同于spam=staticmethod(spam),于是

class Foo:@staticmethod #裝飾器def spam(x,y,z):print(x,y,z)

使用演示

print(type(Foo.spam)) #類型本質(zhì)就是函數(shù) Foo.spam(1,2,3) #調(diào)用函數(shù)應(yīng)該有幾個(gè)參數(shù)就傳幾個(gè)參數(shù)f1=Foo() f1.spam(3,3,3) #實(shí)例也可以使用,但通常靜態(tài)方法都是給類用的,實(shí)例在使用時(shí)喪失了自動(dòng)傳值的機(jī)制''' <class 'function'> 1 2 3 3 3 3 '''

應(yīng)用場(chǎng)景:編寫類時(shí)需要采用很多不同的方式來創(chuàng)建實(shí)例,而我們只有一個(gè)__init__函數(shù),此時(shí)靜態(tài)方法就派上用場(chǎng)了

class Date:def __init__(self,year,month,day):self.year=yearself.month=monthself.day=day@staticmethoddef now(): #用Date.now()的形式去產(chǎn)生實(shí)例,該實(shí)例用的是當(dāng)前時(shí)間t=time.localtime() #獲取結(jié)構(gòu)化的時(shí)間格式return Date(t.tm_year,t.tm_mon,t.tm_mday) #新建實(shí)例并且返回@staticmethoddef tomorrow():#用Date.tomorrow()的形式去產(chǎn)生實(shí)例,該實(shí)例用的是明天的時(shí)間t=time.localtime(time.time()+86400)return Date(t.tm_year,t.tm_mon,t.tm_mday)a=Date('1987',11,27) #自己定義時(shí)間 b=Date.now() #采用當(dāng)前時(shí)間 c=Date.tomorrow() #采用明天的時(shí)間print(a.year,a.month,a.day) print(b.year,b.month,b.day) print(c.year,c.month,c.day)

2 類方法

  類方法是給類用的,類在使用時(shí)會(huì)將類本身當(dāng)做參數(shù)傳給類方法的第一個(gè)參數(shù),python為我們內(nèi)置了函數(shù)classmethod來把類中的函數(shù)定義成類方法

class A:x=1@classmethoddef test(cls):print(cls,cls.x)class B(A):x=2 B.test()''' 輸出結(jié)果: <class '__main__.B'> 2 '''

 應(yīng)用場(chǎng)景:

import time class Date:def __init__(self,year,month,day):self.year=yearself.month=monthself.day=day@staticmethoddef now():t=time.localtime()return Date(t.tm_year,t.tm_mon,t.tm_mday)class EuroDate(Date):def __str__(self):return 'year:%s month:%s day:%s' %(self.year,self.month,self.day)e=EuroDate.now() print(e) #我們的意圖是想觸發(fā)EuroDate.__str__,但是結(jié)果為 ''' 輸出結(jié)果: <__main__.Date object at 0x1013f9d68> '''

因?yàn)閑就是用Date類產(chǎn)生的,所以根本不會(huì)觸發(fā)EuroDate.__str__,解決方法就是用classmethod

import time class Date:def __init__(self,year,month,day):self.year=yearself.month=monthself.day=day# @staticmethod# def now():# t=time.localtime()# return Date(t.tm_year,t.tm_mon,t.tm_mday)@classmethod #改成類方法def now(cls):t=time.localtime()return cls(t.tm_year,t.tm_mon,t.tm_mday) #哪個(gè)類來調(diào)用,即用哪個(gè)類cls來實(shí)例化class EuroDate(Date):def __str__(self):return 'year:%s month:%s day:%s' %(self.year,self.month,self.day)e=EuroDate.now() print(e) #我們的意圖是想觸發(fā)EuroDate.__str__,此時(shí)e就是由EuroDate產(chǎn)生的,所以會(huì)如我們所愿 ''' 輸出結(jié)果: year:2017 month:3 day:3 '''

強(qiáng)調(diào),注意注意注意:靜態(tài)方法和類方法雖然是給類準(zhǔn)備的,但是如果實(shí)例去用,也是可以用的,只不過實(shí)例去調(diào)用的時(shí)候容易讓人混淆,不知道你要干啥

x=e.now() #通過實(shí)例e去調(diào)用類方法也一樣可以使用,靜態(tài)方法也一樣 print(x) ''' 輸出結(jié)果: year:2017 month:3 day:3 '''

八 面向?qū)ο蟮能浖_發(fā)

很多人在學(xué)完了python的class機(jī)制之后,遇到一個(gè)生產(chǎn)中的問題,還是會(huì)懵逼,這其實(shí)太正常了,因?yàn)槿魏纬绦虻拈_發(fā)都是先設(shè)計(jì)后編程,python的class機(jī)制只不過是一種編程方式,如果你硬要拿著class去和你的問題死磕,變得更加懵逼都是分分鐘的事,在以前,軟件的開發(fā)相對(duì)簡(jiǎn)單,從任務(wù)的分析到編寫程序,再到程序的調(diào)試,可以由一個(gè)人或一個(gè)小組去完成。但是隨著軟件規(guī)模的迅速增大,軟件任意面臨的問題十分復(fù)雜,需要考慮的因素太多,在一個(gè)軟件中所產(chǎn)生的錯(cuò)誤和隱藏的錯(cuò)誤、未知的錯(cuò)誤可能達(dá)到驚人的程度,這也不是在設(shè)計(jì)階段就完全解決的。

??? 所以軟件的開發(fā)其實(shí)一整套規(guī)范,我們所學(xué)的只是其中的一小部分,一個(gè)完整的開發(fā)過程,需要明確每個(gè)階段的任務(wù),在保證一個(gè)階段正確的前提下再進(jìn)行下一個(gè)階段的工作,稱之為軟件工程

??? 面向?qū)ο蟮能浖こ贪ㄏ旅鎺讉€(gè)部:

1.面向?qū)ο蠓治?#xff08;object oriented analysis ,OOA)

??? 軟件工程中的系統(tǒng)分析階段,要求分析員和用戶結(jié)合在一起,對(duì)用戶的需求做出精確的分析和明確的表述,從大的方面解析軟件系統(tǒng)應(yīng)該做什么,而不是怎么去做。面向?qū)ο蟮姆治鲆凑彰嫦驅(qū)ο蟮母拍詈头椒?#xff0c;在對(duì)任務(wù)的分析中,從客觀存在的事物和事物之間的關(guān)系,貴南出有關(guān)的對(duì)象(對(duì)象的‘特征’和‘技能’)以及對(duì)象之間的聯(lián)系,并將具有相同屬性和行為的對(duì)象用一個(gè)類class來標(biāo)識(shí)。

??? 建立一個(gè)能反映這是工作情況的需求模型,此時(shí)的模型是粗略的。

2 面向?qū)ο笤O(shè)計(jì)(object oriented design,OOD)

??? 根據(jù)面向?qū)ο蠓治鲭A段形成的需求模型,對(duì)每一部分分別進(jìn)行具體的設(shè)計(jì)。

??? 首先是類的設(shè)計(jì),類的設(shè)計(jì)可能包含多個(gè)層次(利用繼承與派生機(jī)制)。然后以這些類為基礎(chǔ)提出程序設(shè)計(jì)的思路和方法,包括對(duì)算法的設(shè)計(jì)。

??? 在設(shè)計(jì)階段并不牽涉任何一門具體的計(jì)算機(jī)語(yǔ)言,而是用一種更通用的描述工具(如偽代碼或流程圖)來描述

3 面向?qū)ο缶幊?#xff08;object oriented programming,OOP)

??? 根據(jù)面向?qū)ο笤O(shè)計(jì)的結(jié)果,選擇一種計(jì)算機(jī)語(yǔ)言把它寫成程序,可以是python

4 面向?qū)ο鬁y(cè)試(object oriented test,OOT)

??? 在寫好程序后交給用戶使用前,必須對(duì)程序進(jìn)行嚴(yán)格的測(cè)試,測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤并修正它。

??? 面向?qū)Φ臏y(cè)試是用面向?qū)ο蟮姆椒ㄟM(jìn)行測(cè)試,以類作為測(cè)試的基本單元。

5 面向?qū)ο缶S護(hù)(object oriendted soft maintenance,OOSM)

??? 正如對(duì)任何產(chǎn)品都需要進(jìn)行售后服務(wù)和維護(hù)一樣,軟件在使用時(shí)也會(huì)出現(xiàn)一些問題,或者軟件商想改進(jìn)軟件的性能,這就需要修改程序。

??? 由于使用了面向?qū)ο蟮姆椒ㄩ_發(fā)程序,使用程序的維護(hù)比較容易。

??? 因?yàn)閷?duì)象的封裝性,修改一個(gè)對(duì)象對(duì)其他的對(duì)象影響很小,利用面向?qū)ο蟮姆椒ňS護(hù)程序,大大提高了軟件維護(hù)的效率,可擴(kuò)展性高。

??? 在面向?qū)ο蠓椒ㄖ?#xff0c;最早發(fā)展的肯定是面向?qū)ο缶幊?OOP),那時(shí)OOA和OOD都還沒有發(fā)展起來,因此程序設(shè)計(jì)者為了寫出面向?qū)ο蟮某绦?#xff0c;還必須深入到分析和設(shè)計(jì)領(lǐng)域,尤其是設(shè)計(jì)領(lǐng)域,那時(shí)的OOP實(shí)際上包含了現(xiàn)在的OOD和OOP兩個(gè)階段,這對(duì)程序設(shè)計(jì)者要求比較高,許多人感到很難掌握。

??? 現(xiàn)在設(shè)計(jì)一個(gè)大的軟件,是嚴(yán)格按照面向?qū)ο筌浖こ痰?個(gè)階段進(jìn)行的,這個(gè)5個(gè)階段的工作不是由一個(gè)人從頭到尾完成的,而是由不同的人分別完成,這樣OOP階段的任務(wù)就比較簡(jiǎn)單了。程序編寫者只需要根據(jù)OOd提出的思路,用面向?qū)ο笳Z(yǔ)言編寫出程序既可。

??? 在一個(gè)大型軟件開發(fā)過程中,OOP只是很小的一個(gè)部分。

??? 對(duì)于全棧開發(fā)的你來說,這五個(gè)階段都有了,對(duì)于簡(jiǎn)單的問題,不必嚴(yán)格按照這個(gè)5個(gè)階段進(jìn)行,往往由程序設(shè)計(jì)者按照面向?qū)ο蟮姆椒ㄟM(jìn)行程序設(shè)計(jì),包括類的設(shè)計(jì)和程序的設(shè)計(jì)

九 小白容易犯的錯(cuò)誤

1.面向?qū)ο蟮某绦蛟O(shè)計(jì)看起來高大上,所以我在編程時(shí)就應(yīng)該保證通篇class,這樣寫出的程序一定是好的程序(面向?qū)ο笾贿m合那些可擴(kuò)展性要求比較高的場(chǎng)景)

2.很多人喜歡說面向?qū)ο笕筇匦?#xff08;這是從哪傳出來的,封裝,多態(tài),繼承?漏洞太多太多,好吧暫且稱為三大特性),那么我在基于面向?qū)ο缶幊虝r(shí),我一定要讓我定義的類中完整的包含這三種特性,這樣寫肯定是好的程序

好家伙,我說降龍十八掌有十八掌,那么你每次跟人干仗都要從第一掌打到第18掌這才顯得你會(huì)了是么,我來一萬(wàn)個(gè)人你需要打10000*18掌對(duì)么,傻叉

3.類有類屬性,實(shí)例有實(shí)例屬性,所以我們?cè)诙xclass時(shí)一定要定義出那么幾個(gè)類屬性,想不到怎么辦,那就使勁的想,定義的越多越牛逼

這就犯了一個(gè)嚴(yán)重的錯(cuò)誤,程序越早面向?qū)ο?#xff0c;死的越早,為啥面向?qū)ο?#xff0c;因?yàn)槲覀円獙?shù)據(jù)與功能結(jié)合到一起,程序整體的結(jié)構(gòu)都沒有出來,或者說需要考慮的問題你都沒有搞清楚個(gè)八九不離十,你就開始面向?qū)ο罅?#xff0c;這就導(dǎo)致了,你在那里干想,自以為想通了,定義了一堆屬性,結(jié)果后來又都用不到,或者想不通到底應(yīng)該定義啥,那就一直想吧,想著想著就瘋了。

你見過哪家公司要開發(fā)一個(gè)軟件,上來就開始寫,肯定是頻繁的開會(huì)討論計(jì)劃,請(qǐng)看第八節(jié)

4.既然這么麻煩,那么我徹底解脫了,我們不要用面向?qū)ο缶幊塘?#xff0c;你啊,你有大才,你能成事啊,傻叉。

十 python中關(guān)于OOP的常用術(shù)語(yǔ)

抽象/實(shí)現(xiàn)

抽象指對(duì)現(xiàn)實(shí)世界問題和實(shí)體的本質(zhì)表現(xiàn),行為和特征建模,建立一個(gè)相關(guān)的子集,可以用于 繪程序結(jié)構(gòu),從而實(shí)現(xiàn)這種模型。抽象不僅包括這種模型的數(shù)據(jù)屬性,還定義了這些數(shù)據(jù)的接口。

對(duì)某種抽象的實(shí)現(xiàn)就是對(duì)此數(shù)據(jù)及與之相關(guān)接口的現(xiàn)實(shí)化(realization)。現(xiàn)實(shí)化這個(gè)過程對(duì)于客戶 程序應(yīng)當(dāng)是透明而且無(wú)關(guān)的。?

封裝/接口

封裝描述了對(duì)數(shù)據(jù)/信息進(jìn)行隱藏的觀念,它對(duì)數(shù)據(jù)屬性提供接口和訪問函數(shù)。通過任何客戶端直接對(duì)數(shù)據(jù)的訪問,無(wú)視接口,與封裝性都是背道而馳的,除非程序員允許這些操作。作為實(shí)現(xiàn)的 一部分,客戶端根本就不需要知道在封裝之后,數(shù)據(jù)屬性是如何組織的。在Python中,所有的類屬性都是公開的,但名字可能被“混淆”了,以阻止未經(jīng)授權(quán)的訪問,但僅此而已,再?zèng)]有其他預(yù)防措施了。這就需要在設(shè)計(jì)時(shí),對(duì)數(shù)據(jù)提供相應(yīng)的接口,以免客戶程序通過不規(guī)范的操作來存取封裝的數(shù)據(jù)屬性。

注意:封裝絕不是等于“把不想讓別人看到、以后可能修改的東西用private隱藏起來”

真正的封裝是,經(jīng)過深入的思考,做出良好的抽象,給出“完整且最小”的接口,并使得內(nèi)部細(xì)節(jié)可以對(duì)外透明

(注意:對(duì)外透明的意思是外部調(diào)用者可以順利的得到自己想要的任何功能,完全意識(shí)不到內(nèi)部細(xì)節(jié)的存在)

合成

合成擴(kuò)充了對(duì)類的 述,使得多個(gè)不同的類合成為一個(gè)大的類,來解決現(xiàn)實(shí)問題。合成 述了 一個(gè)異常復(fù)雜的系統(tǒng),比如一個(gè)類由其它類組成,更小的組件也可能是其它的類,數(shù)據(jù)屬性及行為, 所有這些合在一起,彼此是“有一個(gè)”的關(guān)系。

派生/繼承/繼承結(jié)構(gòu)

派生描述了子類衍生出新的特性,新類保留已存類類型中所有需要的數(shù)據(jù)和行為,但允許修改或者其它的自定義操作,都不會(huì)修改原類的定義。
繼承描述了子類屬性從祖先類繼承這樣一種方式
繼承結(jié)構(gòu)表示多“代”派生,可以述成一個(gè)“族譜”,連續(xù)的子類,與祖先類都有關(guān)系。

泛化/特化

基于繼承
泛化表示所有子類與其父類及祖先類有一樣的特點(diǎn)。
特化描述所有子類的自定義,也就是,什么屬性讓它與其祖先類不同。

多態(tài)與多態(tài)性

多態(tài)指的是同一種事物的多種狀態(tài):水這種事物有多種不同的狀態(tài):冰,水蒸氣

多態(tài)性的概念指出了對(duì)象如何通過他們共同的屬性和動(dòng)作來操作及訪問,而不需考慮他們具體的類。

冰,水蒸氣,都繼承于水,它們都有一個(gè)同名的方法就是變成云,但是冰.變?cè)?),與水蒸氣.變?cè)?)是截然不同的過程,雖然調(diào)用的方法都一樣

自省/反射

自省也稱作反射,這個(gè)性質(zhì)展示了某對(duì)象是如何在運(yùn)行期取得自身信息的。如果傳一個(gè)對(duì)象給你,你可以查出它有什么能力,這是一項(xiàng)強(qiáng)大的特性。如果Python不支持某種形式的自省功能,dir和type內(nèi)建函數(shù),將很難正常工作。還有那些特殊屬性,像__dict__,__name__及__doc__

轉(zhuǎn)載于:https://www.cnblogs.com/can-H/articles/6506475.html

總結(jié)

以上是生活随笔為你收集整理的08-面向对象----的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

精品国产乱码久久久久乱码 | 老太婆性杂交欧美肥老太 | 成人免费视频视频在线观看 免费 | 亚洲 a v无 码免 费 成 人 a v | 撕开奶罩揉吮奶头视频 | 女人被男人躁得好爽免费视频 | 天海翼激烈高潮到腰振不止 | 无遮无挡爽爽免费视频 | 大地资源网第二页免费观看 | 亚洲精品久久久久久久久久久 | 在教室伦流澡到高潮hnp视频 | 国产精品久久久久影院嫩草 | 欧洲欧美人成视频在线 | 2019nv天堂香蕉在线观看 | 国产精品久久久 | 午夜熟女插插xx免费视频 | 色欲综合久久中文字幕网 | 欧美阿v高清资源不卡在线播放 | 国内揄拍国内精品少妇国语 | 人人妻人人澡人人爽欧美一区 | 欧美丰满熟妇xxxx | 亚洲成a人片在线观看无码3d | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 性色欲情网站iwww九文堂 | 99久久人妻精品免费二区 | 久久综合色之久久综合 | 免费人成网站视频在线观看 | 欧美xxxx黑人又粗又长 | 国产农村妇女高潮大叫 | 精品少妇爆乳无码av无码专区 | 一本久久a久久精品亚洲 | 99久久亚洲精品无码毛片 | 午夜精品一区二区三区的区别 | 丰满少妇熟乱xxxxx视频 | 国产亚av手机在线观看 | 大乳丰满人妻中文字幕日本 | 性做久久久久久久免费看 | 日本熟妇人妻xxxxx人hd | 熟妇人妻中文av无码 | 国产午夜无码视频在线观看 | 国产精品亚洲lv粉色 | 少妇厨房愉情理9仑片视频 | 水蜜桃av无码 | 日韩 欧美 动漫 国产 制服 | 人妻少妇精品视频专区 | 欧美日韩精品 | 日韩无码专区 | 亚洲色www成人永久网址 | 国产乱人伦av在线无码 | 久久久精品国产sm最大网站 | 在线观看国产午夜福利片 | 黑人粗大猛烈进出高潮视频 | 性欧美牲交在线视频 | 精品一区二区三区无码免费视频 | 99久久精品午夜一区二区 | 欧美 日韩 亚洲 在线 | 久久久国产一区二区三区 | 久久久成人毛片无码 | 熟女体下毛毛黑森林 | 精品成人av一区二区三区 | 国产色xx群视频射精 | 亚洲va欧美va天堂v国产综合 | 黑人巨大精品欧美一区二区 | 无码人妻少妇伦在线电影 | 少妇性l交大片欧洲热妇乱xxx | 内射巨臀欧美在线视频 | 国产乱人偷精品人妻a片 | av人摸人人人澡人人超碰下载 | 久久亚洲日韩精品一区二区三区 | 久久精品视频在线看15 | 欧洲美熟女乱又伦 | 久久国产精品精品国产色婷婷 | 久久99精品国产.久久久久 | 99久久99久久免费精品蜜桃 | 大地资源网第二页免费观看 | 亚洲精品一区二区三区婷婷月 | 久久亚洲中文字幕精品一区 | 国产午夜无码精品免费看 | 成熟女人特级毛片www免费 | 人人澡人人透人人爽 | 窝窝午夜理论片影院 | 四十如虎的丰满熟妇啪啪 | 色 综合 欧美 亚洲 国产 | 欧美老熟妇乱xxxxx | 激情爆乳一区二区三区 | 亚无码乱人伦一区二区 | 日韩 欧美 动漫 国产 制服 | 中文字幕av日韩精品一区二区 | 中文字幕人妻无码一夲道 | 77777熟女视频在线观看 а天堂中文在线官网 | 日本成熟视频免费视频 | 欧美精品免费观看二区 | 免费人成在线观看网站 | 国产亚洲精品精品国产亚洲综合 | 久久精品成人欧美大片 | 成人av无码一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 毛片内射-百度 | 国产亚洲精品久久久久久 | 在线看片无码永久免费视频 | 国产精品亚洲一区二区三区喷水 | 亚洲成av人片在线观看无码不卡 | 3d动漫精品啪啪一区二区中 | 精品久久久久久人妻无码中文字幕 | 丝袜人妻一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美丰满熟妇xxxx性ppx人交 | 正在播放老肥熟妇露脸 | 动漫av一区二区在线观看 | 欧美一区二区三区视频在线观看 | 欧美成人高清在线播放 | 最新版天堂资源中文官网 | 国产成人无码区免费内射一片色欲 | 精品无码成人片一区二区98 | 伦伦影院午夜理论片 | 国产免费观看黄av片 | 88国产精品欧美一区二区三区 | 无码乱肉视频免费大全合集 | 国产乡下妇女做爰 | 国产偷自视频区视频 | 无码人妻少妇伦在线电影 | 久久精品人人做人人综合 | 亚洲色在线无码国产精品不卡 | 午夜时刻免费入口 | 99riav国产精品视频 | 亚洲中文字幕久久无码 | 午夜时刻免费入口 | 久久婷婷五月综合色国产香蕉 | 激情内射日本一区二区三区 | 久久午夜夜伦鲁鲁片无码免费 | 男女作爱免费网站 | 国产凸凹视频一区二区 | 亚洲人成人无码网www国产 | 久久精品国产99精品亚洲 | 亚洲成a人片在线观看日本 | 性开放的女人aaa片 | 欧洲熟妇色 欧美 | 国产亚洲欧美日韩亚洲中文色 | 人妻熟女一区 | 国产成人一区二区三区在线观看 | 一本一道久久综合久久 | 欧美第一黄网免费网站 | 亚洲精品美女久久久久久久 | 精品无码一区二区三区爱欲 | 国产午夜无码视频在线观看 | 7777奇米四色成人眼影 | 亚洲中文字幕乱码av波多ji | 在线成人www免费观看视频 | 老熟妇乱子伦牲交视频 | 国产办公室秘书无码精品99 | 丰满人妻翻云覆雨呻吟视频 | 久久精品人妻少妇一区二区三区 | 无码人妻精品一区二区三区下载 | 亚洲中文字幕无码一久久区 | 亚洲精品一区二区三区在线 | 天天躁夜夜躁狠狠是什么心态 | 欧美黑人巨大xxxxx | 高清无码午夜福利视频 | 欧洲精品码一区二区三区免费看 | 精品人妻人人做人人爽夜夜爽 | 成人无码影片精品久久久 | 无码成人精品区在线观看 | 中文久久乱码一区二区 | 99视频精品全部免费免费观看 | 狂野欧美性猛交免费视频 | 99久久久无码国产aaa精品 | 午夜精品一区二区三区的区别 | 国产手机在线αⅴ片无码观看 | 欧美 日韩 亚洲 在线 | 久久亚洲中文字幕无码 | 少妇无码一区二区二三区 | 亚洲精品久久久久avwww潮水 | 国产成人无码区免费内射一片色欲 | 俄罗斯老熟妇色xxxx | 国产人妖乱国产精品人妖 | 国产精品国产自线拍免费软件 | 熟妇女人妻丰满少妇中文字幕 | 中文字幕无码日韩专区 | 日韩精品无码免费一区二区三区 | 亚洲综合无码一区二区三区 | 亚洲精品成人av在线 | 中文字幕无码av激情不卡 | 性啪啪chinese东北女人 | 欧美喷潮久久久xxxxx | 国产精品自产拍在线观看 | 亚洲色在线无码国产精品不卡 | 亚洲一区二区三区无码久久 | 欧美国产日产一区二区 | 欧美亚洲国产一区二区三区 | 一本一道久久综合久久 | 精品无人区无码乱码毛片国产 | 欧美老人巨大xxxx做受 | 55夜色66夜色国产精品视频 | 青草视频在线播放 | 国产真实夫妇视频 | 国产熟妇高潮叫床视频播放 | 中文字幕av日韩精品一区二区 | 国产偷抇久久精品a片69 | 婷婷综合久久中文字幕蜜桃三电影 | 高中生自慰www网站 | 免费无码的av片在线观看 | 青青草原综合久久大伊人精品 | 98国产精品综合一区二区三区 | 国产精品久久久久无码av色戒 | 色欲人妻aaaaaaa无码 | 2019午夜福利不卡片在线 | 中文精品无码中文字幕无码专区 | 亚洲自偷精品视频自拍 | 欧美老妇与禽交 | 无码毛片视频一区二区本码 | 色一情一乱一伦一视频免费看 | 久久99精品久久久久久 | 日日干夜夜干 | 99久久婷婷国产综合精品青草免费 | 亚洲一区二区观看播放 | 人人爽人人澡人人高潮 | 午夜理论片yy44880影院 | 亚洲国产精品美女久久久久 | 国产乱子伦视频在线播放 | 日韩精品久久久肉伦网站 | 最近的中文字幕在线看视频 | 日本xxxx色视频在线观看免费 | 欧美刺激性大交 | 男人的天堂2018无码 | 国产网红无码精品视频 | 黑人巨大精品欧美黑寡妇 | 国产免费久久精品国产传媒 | 亚洲精品午夜无码电影网 | 亚洲中文字幕无码中文字在线 | 亚洲无人区午夜福利码高清完整版 | 99精品国产综合久久久久五月天 | 亚洲大尺度无码无码专区 | 丝袜人妻一区二区三区 | 亚洲午夜福利在线观看 | 天干天干啦夜天干天2017 | 成人欧美一区二区三区 | 国内老熟妇对白xxxxhd | 欧美xxxxx精品 | 国产精品资源一区二区 | 一本久久a久久精品亚洲 | 国内精品人妻无码久久久影院蜜桃 | 亚洲国产成人av在线观看 | 亚洲日本一区二区三区在线 | 日产国产精品亚洲系列 | 国内揄拍国内精品人妻 | 国内精品久久久久久中文字幕 | 久久99精品久久久久久动态图 | 日本大乳高潮视频在线观看 | 国产明星裸体无码xxxx视频 | 久久久中文字幕日本无吗 | 亚洲精品国产精品乱码视色 | 久久久久成人片免费观看蜜芽 | 熟妇女人妻丰满少妇中文字幕 | 国产av一区二区三区最新精品 | 日本一区二区三区免费高清 | 成人亚洲精品久久久久软件 | 国産精品久久久久久久 | 在线天堂新版最新版在线8 | 国产特级毛片aaaaaaa高清 | 久久久久久亚洲精品a片成人 | 欧美老妇交乱视频在线观看 | 日本va欧美va欧美va精品 | 青青青手机频在线观看 | 偷窥日本少妇撒尿chinese | 丝袜足控一区二区三区 | 国产成人无码av在线影院 | 欧美成人午夜精品久久久 | 曰韩少妇内射免费播放 | 精品aⅴ一区二区三区 | 网友自拍区视频精品 | 捆绑白丝粉色jk震动捧喷白浆 | 牛和人交xxxx欧美 | 免费无码一区二区三区蜜桃大 | 扒开双腿吃奶呻吟做受视频 | 98国产精品综合一区二区三区 | 色老头在线一区二区三区 | 国产精华av午夜在线观看 | 麻豆国产97在线 | 欧洲 | 男女下面进入的视频免费午夜 | 天干天干啦夜天干天2017 | 久久97精品久久久久久久不卡 | 无码成人精品区在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 伊人久久大香线蕉av一区二区 | 又大又硬又爽免费视频 | 久久精品人人做人人综合 | 99久久婷婷国产综合精品青草免费 | 国产激情综合五月久久 | 天天躁夜夜躁狠狠是什么心态 | 亚洲精品久久久久中文第一幕 | 亚无码乱人伦一区二区 | 国产成人综合美国十次 | 久9re热视频这里只有精品 | 岛国片人妻三上悠亚 | 一个人看的视频www在线 | 亚洲人成网站色7799 | 无码免费一区二区三区 | 国产69精品久久久久app下载 | 日韩人妻系列无码专区 | 男女猛烈xx00免费视频试看 | 未满小14洗澡无码视频网站 | 7777奇米四色成人眼影 | 最新国产乱人伦偷精品免费网站 | 久久久精品成人免费观看 | 丰满人妻被黑人猛烈进入 | 久久精品人人做人人综合 | 久久人人爽人人爽人人片av高清 | 久久久精品欧美一区二区免费 | 亚洲国产高清在线观看视频 | 亚洲精品午夜国产va久久成人 | 人人妻人人澡人人爽欧美精品 | 麻豆国产丝袜白领秘书在线观看 | 天下第一社区视频www日本 | 中文久久乱码一区二区 | 欧洲欧美人成视频在线 | 人妻夜夜爽天天爽三区 | 欧美喷潮久久久xxxxx | 国产精品鲁鲁鲁 | 国产精品毛多多水多 | 少妇无套内谢久久久久 | 亚洲成av人影院在线观看 | 亚洲成av人影院在线观看 | 精品无人区无码乱码毛片国产 | 久久天天躁狠狠躁夜夜免费观看 | 日韩亚洲欧美精品综合 | 精品久久久无码人妻字幂 | 国产明星裸体无码xxxx视频 | 久久久av男人的天堂 | 欧洲熟妇色 欧美 | 国产激情精品一区二区三区 | 亚洲 高清 成人 动漫 | 日日摸天天摸爽爽狠狠97 | 欧洲美熟女乱又伦 | 久久综合香蕉国产蜜臀av | 久久综合久久自在自线精品自 | 亚洲熟妇色xxxxx亚洲 | 美女黄网站人色视频免费国产 | 婷婷色婷婷开心五月四房播播 | 性欧美疯狂xxxxbbbb | 99久久婷婷国产综合精品青草免费 | 成人亚洲精品久久久久软件 | 狠狠色色综合网站 | 国产麻豆精品精东影业av网站 | 天天躁日日躁狠狠躁免费麻豆 | 精品久久久中文字幕人妻 | 丰满人妻一区二区三区免费视频 | 国产精品-区区久久久狼 | 国产在线精品一区二区三区直播 | 乱人伦中文视频在线观看 | 国产精品亚洲а∨无码播放麻豆 | 男人扒开女人内裤强吻桶进去 | 精品亚洲成av人在线观看 | 无码毛片视频一区二区本码 | 无码中文字幕色专区 | 亚洲一区二区三区含羞草 | 少妇邻居内射在线 | 熟女少妇在线视频播放 | 亚洲国产精品毛片av不卡在线 | 日日躁夜夜躁狠狠躁 | 秋霞特色aa大片 | 欧美三级不卡在线观看 | 国产又爽又猛又粗的视频a片 | 无套内射视频囯产 | 又大又黄又粗又爽的免费视频 | 老熟女重囗味hdxx69 | 成人一在线视频日韩国产 | 荡女精品导航 | 欧美人与牲动交xxxx | 一个人看的www免费视频在线观看 | 亚洲一区二区三区在线观看网站 | 精品国产一区二区三区四区 | 午夜成人1000部免费视频 | 国产精品亚洲综合色区韩国 | 麻花豆传媒剧国产免费mv在线 | av无码久久久久不卡免费网站 | 欧美日韩综合一区二区三区 | 欧美激情内射喷水高潮 | 精品一区二区三区波多野结衣 | 人妻互换免费中文字幕 | 精品一区二区三区无码免费视频 | 少妇高潮喷潮久久久影院 | 中文字幕乱码人妻无码久久 | 欧美zoozzooz性欧美 | 亚洲国产精品美女久久久久 | 97精品人妻一区二区三区香蕉 | 国产在线无码精品电影网 | 国产精品人人爽人人做我的可爱 | 少妇无套内谢久久久久 | 国产成人精品无码播放 | 色综合天天综合狠狠爱 | 日日摸夜夜摸狠狠摸婷婷 | 天天拍夜夜添久久精品 | 无码乱肉视频免费大全合集 | 荫蒂添的好舒服视频囗交 | 精品无码一区二区三区的天堂 | 乱人伦中文视频在线观看 | 日韩av无码一区二区三区 | 日日天日日夜日日摸 | 人妻少妇精品无码专区二区 | 亚洲自偷自偷在线制服 | 日韩精品无码一本二本三本色 | 色婷婷香蕉在线一区二区 | 国产 精品 自在自线 | 国产又粗又硬又大爽黄老大爷视 | 日韩人妻少妇一区二区三区 | 亚洲综合另类小说色区 | 人妻人人添人妻人人爱 | av无码电影一区二区三区 | 精品无码一区二区三区的天堂 | 亚洲一区二区三区香蕉 | 午夜精品久久久内射近拍高清 | 丰满少妇人妻久久久久久 | 熟女俱乐部五十路六十路av | 熟女少妇在线视频播放 | 亚洲色偷偷偷综合网 | 亚洲一区二区三区四区 | 国产av人人夜夜澡人人爽麻豆 | 国产两女互慰高潮视频在线观看 | 麻花豆传媒剧国产免费mv在线 | 97资源共享在线视频 | 亚洲国产欧美在线成人 | 精品偷自拍另类在线观看 | 欧美一区二区三区视频在线观看 | 波多野结衣av一区二区全免费观看 | 欧美阿v高清资源不卡在线播放 | 国产一区二区不卡老阿姨 | 久久久久久久人妻无码中文字幕爆 | 国产成人人人97超碰超爽8 | 女人色极品影院 | 精品国产一区av天美传媒 | 国产偷抇久久精品a片69 | 51国偷自产一区二区三区 | 欧美猛少妇色xxxxx | 国产成人无码av片在线观看不卡 | 国产av无码专区亚洲a∨毛片 | 国产午夜福利亚洲第一 | 澳门永久av免费网站 | 高潮毛片无遮挡高清免费 | 97精品人妻一区二区三区香蕉 | 国产电影无码午夜在线播放 | 精品成在人线av无码免费看 | 中文久久乱码一区二区 | 正在播放老肥熟妇露脸 | 久久久久99精品国产片 | 麻豆成人精品国产免费 | 精品夜夜澡人妻无码av蜜桃 | 欧美日韩一区二区免费视频 | 给我免费的视频在线观看 | 国产高清不卡无码视频 | 男女性色大片免费网站 | 精品aⅴ一区二区三区 | 亚洲乱亚洲乱妇50p | 疯狂三人交性欧美 | 蜜桃无码一区二区三区 | 超碰97人人做人人爱少妇 | 色五月五月丁香亚洲综合网 | 亚洲国产精品无码一区二区三区 | 欧美xxxx黑人又粗又长 | 中文字幕无码av波多野吉衣 | 装睡被陌生人摸出水好爽 | 日本www一道久久久免费榴莲 | 亚洲区欧美区综合区自拍区 | 99久久精品无码一区二区毛片 | 97精品人妻一区二区三区香蕉 | 色综合久久久久综合一本到桃花网 | 国产又爽又黄又刺激的视频 | 亚洲人成网站免费播放 | 麻花豆传媒剧国产免费mv在线 | 玩弄少妇高潮ⅹxxxyw | 久久久久99精品成人片 | 波多野结衣高清一区二区三区 | 九月婷婷人人澡人人添人人爽 | 欧美 亚洲 国产 另类 | 免费男性肉肉影院 | 好男人社区资源 | 精品国产一区av天美传媒 | 国产在热线精品视频 | 成人无码精品一区二区三区 | 国产做国产爱免费视频 | 日韩少妇白浆无码系列 | 少妇性l交大片欧洲热妇乱xxx | 国产97人人超碰caoprom | 亚洲中文字幕va福利 | 日韩欧美中文字幕在线三区 | 免费国产黄网站在线观看 | 无码成人精品区在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 377p欧洲日本亚洲大胆 | 日韩精品一区二区av在线 | 国产欧美熟妇另类久久久 | 日韩成人一区二区三区在线观看 | 给我免费的视频在线观看 | 国产成人一区二区三区在线观看 | 97人妻精品一区二区三区 | 国内少妇偷人精品视频 | 国产办公室秘书无码精品99 | 高清国产亚洲精品自在久久 | 无码人妻久久一区二区三区不卡 | 黑人巨大精品欧美一区二区 | 亚洲色欲色欲欲www在线 | 又大又紧又粉嫩18p少妇 | 荫蒂被男人添的好舒服爽免费视频 | 99久久久国产精品无码免费 | 精品无码一区二区三区爱欲 | 亚洲色www成人永久网址 | 国产成人精品久久亚洲高清不卡 | 捆绑白丝粉色jk震动捧喷白浆 | 我要看www免费看插插视频 | 欧美 丝袜 自拍 制服 另类 | 久久精品视频在线看15 | 丰满人妻被黑人猛烈进入 | 风流少妇按摩来高潮 | 2019nv天堂香蕉在线观看 | 亚洲精品成人av在线 | 中文字幕乱码亚洲无线三区 | 免费人成网站视频在线观看 | 精品久久综合1区2区3区激情 | 国产精品久久久久7777 | 99久久99久久免费精品蜜桃 | 99国产欧美久久久精品 | 亚洲成色www久久网站 | 嫩b人妻精品一区二区三区 | 中文精品无码中文字幕无码专区 | 99久久人妻精品免费一区 | 纯爱无遮挡h肉动漫在线播放 | 中文字幕无码av激情不卡 | 97se亚洲精品一区 | 国产在热线精品视频 | 国产做国产爱免费视频 | 亚洲精品久久久久久一区二区 | 久久精品中文字幕一区 | 国产成人精品三级麻豆 | 一本无码人妻在中文字幕免费 | 亚洲高清偷拍一区二区三区 | 国产av一区二区精品久久凹凸 | 中文字幕人妻无码一夲道 | 亚洲高清偷拍一区二区三区 | 日本高清一区免费中文视频 | 亚洲区欧美区综合区自拍区 | 少妇久久久久久人妻无码 | 国产精品丝袜黑色高跟鞋 | 无码国产色欲xxxxx视频 | 日本一区二区更新不卡 | 久久精品一区二区三区四区 | 奇米影视888欧美在线观看 | 精品久久8x国产免费观看 | 日韩精品一区二区av在线 | 中文精品无码中文字幕无码专区 | 性色欲情网站iwww九文堂 | 日韩人妻无码中文字幕视频 | 国产成人无码区免费内射一片色欲 | 黑森林福利视频导航 | 又大又硬又爽免费视频 | 大肉大捧一进一出视频出来呀 | 精品国偷自产在线 | 国产精品va在线播放 | 东京无码熟妇人妻av在线网址 | 久激情内射婷内射蜜桃人妖 | 国产无av码在线观看 | 成人免费无码大片a毛片 | а√天堂www在线天堂小说 | 久久精品国产日本波多野结衣 | 欧美一区二区三区视频在线观看 | 性色欲情网站iwww九文堂 | 一个人看的www免费视频在线观看 | 欧洲精品码一区二区三区免费看 | 久久综合九色综合欧美狠狠 | 亚洲国产av美女网站 | 亚洲第一无码av无码专区 | 国产亚洲精品久久久久久国模美 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 小sao货水好多真紧h无码视频 | 国语自产偷拍精品视频偷 | 国产高潮视频在线观看 | 国产尤物精品视频 | 国产成人综合美国十次 | 亚洲中文无码av永久不收费 | 日本一区二区三区免费播放 | aⅴ亚洲 日韩 色 图网站 播放 | 久久久久亚洲精品男人的天堂 | 欧美野外疯狂做受xxxx高潮 | 国产99久久精品一区二区 | 国产亲子乱弄免费视频 | 老熟女重囗味hdxx69 | 国产亚洲精品久久久ai换 | 最新国产乱人伦偷精品免费网站 | 国产av无码专区亚洲a∨毛片 | 在线播放免费人成毛片乱码 | 久久久久久久人妻无码中文字幕爆 | 国产精品无码永久免费888 | 午夜精品一区二区三区在线观看 | 熟妇人妻无乱码中文字幕 | 国产欧美精品一区二区三区 | 国产av一区二区三区最新精品 | 国产内射爽爽大片视频社区在线 | 久久久久亚洲精品中文字幕 | 人妻少妇被猛烈进入中文字幕 | 久久午夜无码鲁丝片 | 欧美人与牲动交xxxx | 中文字幕+乱码+中文字幕一区 | 久久国产精品_国产精品 | 曰韩无码二三区中文字幕 | 九九久久精品国产免费看小说 | 亚洲中文字幕久久无码 | 日韩 欧美 动漫 国产 制服 | 午夜成人1000部免费视频 | 国模大胆一区二区三区 | 日本精品高清一区二区 | 久9re热视频这里只有精品 | 1000部夫妻午夜免费 | 日本精品久久久久中文字幕 | 国产乱人偷精品人妻a片 | 久久精品国产亚洲精品 | 亚洲精品国产品国语在线观看 | 欧美老妇与禽交 | 97久久超碰中文字幕 | 欧美日韩视频无码一区二区三 | 一个人看的www免费视频在线观看 | 亚洲 激情 小说 另类 欧美 | 人妻夜夜爽天天爽三区 | 日韩 欧美 动漫 国产 制服 | 日欧一片内射va在线影院 | 久久久www成人免费毛片 | 在线播放亚洲第一字幕 | 永久免费观看国产裸体美女 | 久久久无码中文字幕久... | 蜜臀av无码人妻精品 | 天天躁日日躁狠狠躁免费麻豆 | 免费国产成人高清在线观看网站 | 亚洲码国产精品高潮在线 | 又粗又大又硬毛片免费看 | 亚洲成a人片在线观看无码3d | 成年美女黄网站色大免费全看 | 熟妇女人妻丰满少妇中文字幕 | 大肉大捧一进一出视频出来呀 | 亚洲大尺度无码无码专区 | 国产超碰人人爽人人做人人添 | 少妇无码吹潮 | 大屁股大乳丰满人妻 | 国产激情无码一区二区 | 精品久久久无码中文字幕 | 又大又硬又黄的免费视频 | 欧美亚洲国产一区二区三区 | а√天堂www在线天堂小说 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 欧美国产亚洲日韩在线二区 | 日韩av无码中文无码电影 | 99re在线播放 | 国产三级久久久精品麻豆三级 | 亚洲精品一区二区三区在线观看 | 国产97人人超碰caoprom | 国产色精品久久人妻 | 国产亚洲精品久久久久久大师 | 久久午夜夜伦鲁鲁片无码免费 | 18禁黄网站男男禁片免费观看 | 色诱久久久久综合网ywww | 熟妇激情内射com | 蜜桃视频插满18在线观看 | 国产亚洲日韩欧美另类第八页 | 亚洲另类伦春色综合小说 | 无码精品人妻一区二区三区av | 欧美色就是色 | 国产网红无码精品视频 | 久久人人爽人人爽人人片ⅴ | 性生交大片免费看l | 久久久久免费精品国产 | 亚洲日韩av片在线观看 | 久久 国产 尿 小便 嘘嘘 | 婷婷综合久久中文字幕蜜桃三电影 | 精品久久久久久人妻无码中文字幕 | 国产精品久久国产精品99 | 欧美黑人乱大交 | 给我免费的视频在线观看 | 好爽又高潮了毛片免费下载 | 黑人大群体交免费视频 | 99精品国产综合久久久久五月天 | 亚洲国产精品美女久久久久 | 久久精品无码一区二区三区 | 亚洲精品一区二区三区婷婷月 | 人妻插b视频一区二区三区 | 欧美真人作爱免费视频 | 亚洲国产av精品一区二区蜜芽 | 中文字幕无码热在线视频 | 国产色视频一区二区三区 | 色爱情人网站 | 国产一区二区三区精品视频 | 亚拍精品一区二区三区探花 | 国产精品毛多多水多 | 亚洲成av人片在线观看无码不卡 | 国产av无码专区亚洲a∨毛片 | 国产精品久久久一区二区三区 | 美女极度色诱视频国产 | 亚洲男人av天堂午夜在 | 最新国产乱人伦偷精品免费网站 | 福利一区二区三区视频在线观看 | 免费观看的无遮挡av | 男女猛烈xx00免费视频试看 | 国产成人综合色在线观看网站 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产激情无码一区二区app | 色五月五月丁香亚洲综合网 | 中文字幕无码视频专区 | 性色欲情网站iwww九文堂 | 中文字幕无码av波多野吉衣 | 四虎永久在线精品免费网址 | 中文字幕 亚洲精品 第1页 | 色婷婷av一区二区三区之红樱桃 | 成人无码精品一区二区三区 | 天堂久久天堂av色综合 | 中文字幕无码日韩专区 | 永久免费观看国产裸体美女 | 97精品国产97久久久久久免费 | 日韩精品a片一区二区三区妖精 | 无码精品国产va在线观看dvd | 免费无码肉片在线观看 | 日韩人妻无码中文字幕视频 | 国产猛烈高潮尖叫视频免费 | 男女爱爱好爽视频免费看 | 日韩精品无码一区二区中文字幕 | 成人免费无码大片a毛片 | 性做久久久久久久免费看 | 激情人妻另类人妻伦 | 九九热爱视频精品 | 午夜嘿嘿嘿影院 | 55夜色66夜色国产精品视频 | 亚洲熟妇色xxxxx欧美老妇 | 高清不卡一区二区三区 | 兔费看少妇性l交大片免费 | 国产高清av在线播放 | 啦啦啦www在线观看免费视频 | 精品日本一区二区三区在线观看 | 丰满少妇弄高潮了www | 亚洲色欲色欲欲www在线 | 乱人伦人妻中文字幕无码 | 老头边吃奶边弄进去呻吟 | 日本成熟视频免费视频 | 狠狠色欧美亚洲狠狠色www | 日日麻批免费40分钟无码 | 精品夜夜澡人妻无码av蜜桃 | 97久久国产亚洲精品超碰热 | 亚洲精品一区二区三区婷婷月 | 欧美熟妇另类久久久久久多毛 | 亚洲精品国产精品乱码不卡 | 秋霞成人午夜鲁丝一区二区三区 | 图片小说视频一区二区 | 少妇性l交大片 | 牲欲强的熟妇农村老妇女 | 国产亚洲日韩欧美另类第八页 | 狠狠色噜噜狠狠狠7777奇米 | 强辱丰满人妻hd中文字幕 | 国产精品久久久久久久9999 | 亚洲国产精品成人久久蜜臀 | 99麻豆久久久国产精品免费 | 无码帝国www无码专区色综合 | 老熟女重囗味hdxx69 | 久久久国产精品无码免费专区 | 99久久亚洲精品无码毛片 | 熟妇女人妻丰满少妇中文字幕 | 精品无码国产自产拍在线观看蜜 | 亚洲男女内射在线播放 | 黑人巨大精品欧美一区二区 | 对白脏话肉麻粗话av | 波多野结衣乳巨码无在线观看 | 国语精品一区二区三区 | 娇妻被黑人粗大高潮白浆 | 久久综合狠狠综合久久综合88 | 在线а√天堂中文官网 | 日本乱偷人妻中文字幕 | 精品国产成人一区二区三区 | 色诱久久久久综合网ywww | 午夜性刺激在线视频免费 | 男人的天堂2018无码 | 中文久久乱码一区二区 | 亚洲欧美综合区丁香五月小说 | 性色欲网站人妻丰满中文久久不卡 | 亚洲а∨天堂久久精品2021 | 奇米影视7777久久精品 | 老熟妇仑乱视频一区二区 | 18禁黄网站男男禁片免费观看 | 国产一区二区不卡老阿姨 | 5858s亚洲色大成网站www | av香港经典三级级 在线 | 东京无码熟妇人妻av在线网址 | 久久精品国产一区二区三区 | 中文字幕中文有码在线 | 偷窥日本少妇撒尿chinese | 国产精品va在线观看无码 | 丰满少妇人妻久久久久久 | 激情内射日本一区二区三区 | 亚洲人成人无码网www国产 | 99精品无人区乱码1区2区3区 | 精品久久久中文字幕人妻 | 狂野欧美性猛xxxx乱大交 | 亚洲成a人片在线观看日本 | 欧美 日韩 人妻 高清 中文 | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品办公室沙发 | 午夜肉伦伦影院 | 小鲜肉自慰网站xnxx | 青草视频在线播放 | 久久人人97超碰a片精品 | 国产又爽又黄又刺激的视频 | 狂野欧美激情性xxxx | 久久99精品久久久久久 | 熟女少妇人妻中文字幕 | 疯狂三人交性欧美 | 久久精品国产大片免费观看 | 午夜丰满少妇性开放视频 | 久久久久99精品成人片 | √天堂中文官网8在线 | 久久久久人妻一区精品色欧美 | 荫蒂被男人添的好舒服爽免费视频 | 午夜精品一区二区三区在线观看 | 国产精品无码一区二区桃花视频 | 欧美性黑人极品hd | 一本大道伊人av久久综合 | 亚洲色www成人永久网址 | 欧美老熟妇乱xxxxx | 欧美野外疯狂做受xxxx高潮 | 国产精品久久久久久亚洲毛片 | 亚洲自偷精品视频自拍 | 色综合久久久无码网中文 | 美女张开腿让人桶 | 乱人伦中文视频在线观看 | 综合激情五月综合激情五月激情1 | 少妇被粗大的猛进出69影院 | 少女韩国电视剧在线观看完整 | 中文字幕av伊人av无码av | 黑人粗大猛烈进出高潮视频 | 蜜臀aⅴ国产精品久久久国产老师 | 精品国产一区二区三区四区 | 国产xxx69麻豆国语对白 | 4hu四虎永久在线观看 | 免费看男女做好爽好硬视频 | 十八禁真人啪啪免费网站 | 久久人人97超碰a片精品 | 欧美 日韩 亚洲 在线 | 中文字幕日韩精品一区二区三区 | 精品无码国产一区二区三区av | 日韩人妻少妇一区二区三区 | 国产精品a成v人在线播放 | 高清无码午夜福利视频 | 国产无套内射久久久国产 | 国产精品久久国产三级国 | 欧美一区二区三区视频在线观看 | 国产av久久久久精东av | 亚洲色偷偷偷综合网 | 18禁黄网站男男禁片免费观看 | 久久zyz资源站无码中文动漫 | 久久天天躁夜夜躁狠狠 | 丰满少妇人妻久久久久久 | 九九久久精品国产免费看小说 | 中文字幕无码av波多野吉衣 | 亚洲第一网站男人都懂 | 中文字幕无线码 | 99精品国产综合久久久久五月天 | 亚洲精品一区二区三区大桥未久 | 捆绑白丝粉色jk震动捧喷白浆 | 牲交欧美兽交欧美 | 性欧美牲交xxxxx视频 | 扒开双腿吃奶呻吟做受视频 | 精品无码一区二区三区的天堂 | 国产激情无码一区二区 | 国产熟女一区二区三区四区五区 | 亚洲gv猛男gv无码男同 | 人人妻在人人 | 中文字幕 人妻熟女 | 色婷婷综合激情综在线播放 | 久久亚洲精品中文字幕无男同 | 亚洲国产精品无码久久久久高潮 | 国产另类ts人妖一区二区 | 夜夜躁日日躁狠狠久久av | 双乳奶水饱满少妇呻吟 | 亚洲精品国产品国语在线观看 | 亚洲一区二区三区含羞草 | 美女极度色诱视频国产 | 色综合久久久久综合一本到桃花网 | 国产在线aaa片一区二区99 | 色一情一乱一伦一区二区三欧美 | 国产三级久久久精品麻豆三级 | 国产精品福利视频导航 | 成人无码精品一区二区三区 | 清纯唯美经典一区二区 | 国产香蕉尹人视频在线 | 少妇性l交大片 | 人妻中文无码久热丝袜 | 曰韩少妇内射免费播放 | 丰满人妻翻云覆雨呻吟视频 | 人人妻人人藻人人爽欧美一区 | 国产办公室秘书无码精品99 | 99精品无人区乱码1区2区3区 | 人妻与老人中文字幕 | 激情内射亚州一区二区三区爱妻 | 日韩人妻无码一区二区三区久久99 | 日本成熟视频免费视频 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 久热国产vs视频在线观看 | 国产高清不卡无码视频 | 亚洲 另类 在线 欧美 制服 | 日日橹狠狠爱欧美视频 | 国产精品二区一区二区aⅴ污介绍 | 国产免费久久精品国产传媒 | 特大黑人娇小亚洲女 | 国产精品二区一区二区aⅴ污介绍 | 久久午夜无码鲁丝片秋霞 | 成人无码视频在线观看网站 | 国产乱人伦av在线无码 | 成人av无码一区二区三区 | 人妻尝试又大又粗久久 | 国产精品无码成人午夜电影 | 国产精品久免费的黄网站 | 午夜成人1000部免费视频 | 爱做久久久久久 | 熟妇女人妻丰满少妇中文字幕 | 色噜噜亚洲男人的天堂 | 午夜成人1000部免费视频 | 色婷婷欧美在线播放内射 | 国产区女主播在线观看 | 性生交大片免费看女人按摩摩 | 亚洲一区av无码专区在线观看 | 国产午夜无码视频在线观看 | 激情综合激情五月俺也去 | 欧美xxxxx精品 | 美女毛片一区二区三区四区 | 亚洲中文字幕在线无码一区二区 | 欧美精品无码一区二区三区 | 欧美国产亚洲日韩在线二区 | 亚洲精品午夜国产va久久成人 | 久久久精品人妻久久影视 | 国产激情一区二区三区 | 国产精品无码永久免费888 | 国产凸凹视频一区二区 | 久久天天躁夜夜躁狠狠 | 久久久久免费看成人影片 | 久久99精品国产麻豆 | 在线欧美精品一区二区三区 | 一二三四社区在线中文视频 | 国产激情无码一区二区 | 天天爽夜夜爽夜夜爽 | 四虎国产精品一区二区 | 免费男性肉肉影院 | 成熟女人特级毛片www免费 | 国产成人无码a区在线观看视频app | 超碰97人人做人人爱少妇 | 亚洲综合无码一区二区三区 | 久久精品国产99久久6动漫 | 大地资源中文第3页 | 扒开双腿疯狂进出爽爽爽视频 | 丰满少妇女裸体bbw | 国产精品无码久久av | 少妇人妻大乳在线视频 | 又大又黄又粗又爽的免费视频 | 亚洲成a人片在线观看无码3d | 一本精品99久久精品77 | 高潮毛片无遮挡高清免费视频 | 国产97色在线 | 免 | 国产片av国语在线观看 | 亚洲码国产精品高潮在线 | 国产精品久久久久9999小说 | 无码一区二区三区在线观看 | 1000部夫妻午夜免费 | 亚洲欧洲中文日韩av乱码 | 欧美日韩视频无码一区二区三 | 精品一二三区久久aaa片 | 欧美精品一区二区精品久久 | 荫蒂添的好舒服视频囗交 | 精品一区二区不卡无码av | 欧美日韩在线亚洲综合国产人 | 国产人成高清在线视频99最全资源 | 人人爽人人澡人人人妻 | 无码av最新清无码专区吞精 | 一本精品99久久精品77 | 亚洲精品欧美二区三区中文字幕 | 强辱丰满人妻hd中文字幕 | 亚洲 欧美 激情 小说 另类 | 成 人影片 免费观看 | 无码av中文字幕免费放 | 亚洲欧美国产精品专区久久 | 国产精品福利视频导航 | 永久免费观看国产裸体美女 | 国产精品久久久久久久9999 | 欧美兽交xxxx×视频 | 中文字幕av日韩精品一区二区 | 久久久国产精品无码免费专区 | 动漫av一区二区在线观看 | 97夜夜澡人人双人人人喊 | 欧美成人家庭影院 | 成年美女黄网站色大免费视频 | 动漫av网站免费观看 | 日韩av无码一区二区三区不卡 | 强奷人妻日本中文字幕 | 色窝窝无码一区二区三区色欲 | 国产激情艳情在线看视频 | 欧美色就是色 | 国产亚洲精品久久久久久国模美 | 久久久久久a亚洲欧洲av冫 | 欧美freesex黑人又粗又大 | 国产av剧情md精品麻豆 | 国产综合久久久久鬼色 | 久久久久亚洲精品男人的天堂 | 国产香蕉97碰碰久久人人 | 我要看www免费看插插视频 | 久久久无码中文字幕久... | 丰满护士巨好爽好大乳 | 日日天日日夜日日摸 | 国精产品一品二品国精品69xx | 国产免费观看黄av片 | 国内丰满熟女出轨videos | 激情国产av做激情国产爱 | 乱中年女人伦av三区 | 大肉大捧一进一出视频出来呀 | 131美女爱做视频 | 国产欧美精品一区二区三区 | 亚洲国产一区二区三区在线观看 | 日产精品高潮呻吟av久久 | 亚洲国产精品久久久天堂 | 波多野42部无码喷潮在线 | 精品国产aⅴ无码一区二区 | 久久精品国产精品国产精品污 | 玩弄人妻少妇500系列视频 | 中文字幕av日韩精品一区二区 | 少妇厨房愉情理9仑片视频 | v一区无码内射国产 | a片免费视频在线观看 | 精品国产福利一区二区 | 亚洲人成网站色7799 | 国产精品18久久久久久麻辣 | 任你躁在线精品免费 | 精品午夜福利在线观看 | 精品偷拍一区二区三区在线看 | 精品一区二区三区无码免费视频 | 成人女人看片免费视频放人 | 性生交片免费无码看人 | 成人综合网亚洲伊人 | 97色伦图片97综合影院 | 成人无码视频免费播放 | 亚洲成a人一区二区三区 | 国产精品高潮呻吟av久久 | 美女黄网站人色视频免费国产 | 中文字幕精品av一区二区五区 | 奇米影视7777久久精品 | 色狠狠av一区二区三区 | 亚洲日本在线电影 | 18禁止看的免费污网站 | 国产偷自视频区视频 | 亚洲区小说区激情区图片区 | 久久精品人人做人人综合 | 久久人人爽人人人人片 | 午夜精品久久久久久久久 | 乌克兰少妇xxxx做受 | 精品人妻人人做人人爽夜夜爽 | 丁香花在线影院观看在线播放 | 一本精品99久久精品77 | 色婷婷欧美在线播放内射 | 国产精品沙发午睡系列 | 少妇太爽了在线观看 | 乱中年女人伦av三区 | 99久久人妻精品免费二区 | 久久精品国产日本波多野结衣 | 亚洲精品一区二区三区婷婷月 | 国产无套内射久久久国产 | 国产深夜福利视频在线 | 亚洲国产高清在线观看视频 | 99久久婷婷国产综合精品青草免费 | 亚洲s码欧洲m码国产av | 日日麻批免费40分钟无码 | 疯狂三人交性欧美 | 日韩亚洲欧美中文高清在线 | 无码毛片视频一区二区本码 | 伊人久久大香线蕉av一区二区 | 亚洲一区二区三区香蕉 | 亚无码乱人伦一区二区 | 亚洲国产精品毛片av不卡在线 | 日本xxxx色视频在线观看免费 | 99久久久无码国产精品免费 | 亚洲成a人一区二区三区 | 97精品人妻一区二区三区香蕉 | 国精产品一品二品国精品69xx | 亚洲精品www久久久 | 国内揄拍国内精品少妇国语 | 亚洲男人av天堂午夜在 | 亚洲精品一区二区三区在线 | 国产精品无码一区二区三区不卡 | 精品无码av一区二区三区 | 亚洲一区av无码专区在线观看 | 国精产品一区二区三区 | 无码任你躁久久久久久久 | 国产亚洲精品久久久久久久久动漫 | 熟女少妇在线视频播放 | 女人高潮内射99精品 | 丰满人妻一区二区三区免费视频 | 国产精品无码mv在线观看 | 2019午夜福利不卡片在线 | 亚洲熟熟妇xxxx | 国产成人无码专区 | 久久午夜无码鲁丝片午夜精品 | 无码成人精品区在线观看 | 久久久精品欧美一区二区免费 | 亚洲国产精品久久人人爱 | 精品人人妻人人澡人人爽人人 | 日日摸日日碰夜夜爽av | 亚洲中文字幕无码中文字在线 | 久久精品成人欧美大片 | 亚洲a无码综合a国产av中文 | 男人扒开女人内裤强吻桶进去 | 性欧美牲交xxxxx视频 | 亚洲欧美中文字幕5发布 | 国产免费久久久久久无码 | 亚洲va中文字幕无码久久不卡 | 在线精品亚洲一区二区 | 国产精品资源一区二区 | 国产两女互慰高潮视频在线观看 | 东京一本一道一二三区 | 久久午夜夜伦鲁鲁片无码免费 | 超碰97人人做人人爱少妇 | 少妇高潮一区二区三区99 | 成人欧美一区二区三区黑人免费 | 老司机亚洲精品影院 | 在线播放无码字幕亚洲 | 日本乱偷人妻中文字幕 | 亚洲gv猛男gv无码男同 | 免费国产成人高清在线观看网站 | 一本大道久久东京热无码av | 好屌草这里只有精品 | 久久亚洲中文字幕精品一区 | 午夜性刺激在线视频免费 | 天天躁日日躁狠狠躁免费麻豆 | 国产亚洲精品久久久久久大师 | 国产精品亚洲专区无码不卡 | 午夜精品久久久内射近拍高清 | 日本乱偷人妻中文字幕 | 51国偷自产一区二区三区 | 性开放的女人aaa片 | 久9re热视频这里只有精品 | 成人欧美一区二区三区黑人免费 | 疯狂三人交性欧美 | 亚洲狠狠婷婷综合久久 | 日本乱人伦片中文三区 | 影音先锋中文字幕无码 | 无遮挡国产高潮视频免费观看 | 亚洲色www成人永久网址 | 熟妇激情内射com | 丰满人妻一区二区三区免费视频 | 久久亚洲国产成人精品性色 | 亚洲国产精品无码一区二区三区 | 九九在线中文字幕无码 | 久9re热视频这里只有精品 | 麻豆国产丝袜白领秘书在线观看 | 午夜精品久久久久久久 | 1000部啪啪未满十八勿入下载 | 久久久久亚洲精品男人的天堂 | 99久久99久久免费精品蜜桃 | 无码午夜成人1000部免费视频 | 成人动漫在线观看 | 一本久久伊人热热精品中文字幕 | 在线成人www免费观看视频 | 无码人妻丰满熟妇区五十路百度 | 人人妻人人澡人人爽欧美精品 | 亚洲无人区午夜福利码高清完整版 | 少妇无套内谢久久久久 | 老头边吃奶边弄进去呻吟 | а天堂中文在线官网 | 亚洲中文字幕乱码av波多ji | 2020久久超碰国产精品最新 | 亚洲欧美色中文字幕在线 | 亚洲精品一区二区三区在线观看 | 欧美第一黄网免费网站 | 大胆欧美熟妇xx | 亚洲精品成a人在线观看 | 精品无人区无码乱码毛片国产 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 中文精品无码中文字幕无码专区 | 丰满人妻一区二区三区免费视频 | 中文字幕乱码人妻无码久久 | 日产精品99久久久久久 | 久久zyz资源站无码中文动漫 | 玩弄中年熟妇正在播放 | 在线播放免费人成毛片乱码 | 国产乱人伦av在线无码 | 亚洲成a人片在线观看无码 | 国产香蕉尹人视频在线 | 国产绳艺sm调教室论坛 | 国产亚洲视频中文字幕97精品 | 中文字幕乱码中文乱码51精品 | 四虎永久在线精品免费网址 | а天堂中文在线官网 | 亚洲日韩av一区二区三区中文 | 亚洲综合精品香蕉久久网 | 亚洲娇小与黑人巨大交 | 国内精品久久毛片一区二区 | 人人爽人人澡人人高潮 | 久久天天躁夜夜躁狠狠 | 少妇性荡欲午夜性开放视频剧场 | 亚无码乱人伦一区二区 | 精品国产aⅴ无码一区二区 | 99国产欧美久久久精品 | 人妻有码中文字幕在线 | 少妇久久久久久人妻无码 | 亚洲日韩av片在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲自偷精品视频自拍 | 露脸叫床粗话东北少妇 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产免费久久精品国产传媒 | 国内精品人妻无码久久久影院 | 国产精品亚洲综合色区韩国 | 乱人伦中文视频在线观看 | 精品少妇爆乳无码av无码专区 | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品第一区揄拍无码 | 国产av无码专区亚洲a∨毛片 | 亚洲国产欧美国产综合一区 | 国产真人无遮挡作爱免费视频 | 国产欧美亚洲精品a | 精品午夜福利在线观看 | 久久国产劲爆∧v内射 | 一区二区三区乱码在线 | 欧洲 | 纯爱无遮挡h肉动漫在线播放 | 无码人妻av免费一区二区三区 | 99精品无人区乱码1区2区3区 | 国内少妇偷人精品视频 | 国产三级精品三级男人的天堂 | 国内丰满熟女出轨videos | 精品少妇爆乳无码av无码专区 | 亚洲熟妇色xxxxx欧美老妇 | 久久午夜夜伦鲁鲁片无码免费 | 国产精品久久久久久无码 | 妺妺窝人体色www在线小说 | 纯爱无遮挡h肉动漫在线播放 | 精品人人妻人人澡人人爽人人 | 国产成人无码一二三区视频 | 国产精品久久久午夜夜伦鲁鲁 | 成人试看120秒体验区 | 麻豆国产人妻欲求不满谁演的 | 夜夜影院未满十八勿进 | 三级4级全黄60分钟 | 无码免费一区二区三区 | аⅴ资源天堂资源库在线 | 特级做a爰片毛片免费69 | 伊人久久大香线蕉av一区二区 | 在线播放免费人成毛片乱码 | 国产片av国语在线观看 | 一本色道久久综合亚洲精品不卡 | 日本大香伊一区二区三区 | 无码人妻精品一区二区三区下载 | 国产av久久久久精东av | 国产艳妇av在线观看果冻传媒 | 欧美阿v高清资源不卡在线播放 | 少妇高潮一区二区三区99 | 国产成人无码a区在线观看视频app | 午夜肉伦伦影院 | 亚洲日本va中文字幕 | 任你躁国产自任一区二区三区 | 国产亚洲精品久久久久久国模美 | 亚洲一区av无码专区在线观看 | 久久伊人色av天堂九九小黄鸭 | 美女极度色诱视频国产 | 亚洲日韩一区二区 | 高潮毛片无遮挡高清免费 | 成人精品视频一区二区 | 成人一区二区免费视频 | 欧美人与牲动交xxxx | 国产成人一区二区三区别 | 东京热无码av男人的天堂 | 久久zyz资源站无码中文动漫 | 无码国产乱人伦偷精品视频 | 成 人影片 免费观看 | 久久久精品欧美一区二区免费 | 55夜色66夜色国产精品视频 | 精品日本一区二区三区在线观看 | 亚洲欧洲中文日韩av乱码 | 亚洲欧洲无卡二区视頻 | a片在线免费观看 | 国产亚洲精品久久久久久久 | 久久99久久99精品中文字幕 | 精品久久8x国产免费观看 | av无码不卡在线观看免费 | 免费人成在线观看网站 | 精品无人国产偷自产在线 | 人人妻人人澡人人爽欧美精品 | 夜夜影院未满十八勿进 | 亚洲熟悉妇女xxx妇女av | 毛片内射-百度 | 澳门永久av免费网站 | 国产办公室秘书无码精品99 | 在线 国产 欧美 亚洲 天堂 | 亚洲精品久久久久中文第一幕 | 人人妻人人藻人人爽欧美一区 | 极品嫩模高潮叫床 | 天堂一区人妻无码 | 老熟妇乱子伦牲交视频 | 日本精品少妇一区二区三区 | 中文字幕无码免费久久99 | aa片在线观看视频在线播放 | aⅴ在线视频男人的天堂 | 熟妇女人妻丰满少妇中文字幕 | 高中生自慰www网站 | 日韩精品无码一本二本三本色 | 永久免费观看美女裸体的网站 | 日韩亚洲欧美精品综合 | 九九久久精品国产免费看小说 | 中文毛片无遮挡高清免费 | 亚洲a无码综合a国产av中文 | 国产真实乱对白精彩久久 | 中文字幕人妻丝袜二区 | 无码人妻丰满熟妇区毛片18 | 欧美精品国产综合久久 | 国产午夜无码视频在线观看 | 牲交欧美兽交欧美 | 久久精品国产一区二区三区肥胖 | 国产精品久久福利网站 | 国产亚洲日韩欧美另类第八页 | 精品成人av一区二区三区 | 国产精品无码久久av | 麻豆精品国产精华精华液好用吗 | 欧美第一黄网免费网站 | 久久aⅴ免费观看 | 色 综合 欧美 亚洲 国产 | 久久久www成人免费毛片 | 日日碰狠狠丁香久燥 | 久久精品无码一区二区三区 | 国产色xx群视频射精 | 欧美国产日产一区二区 | 久久久久久a亚洲欧洲av冫 | 人人妻人人澡人人爽人人精品浪潮 | 国产成人一区二区三区别 | 精品国产一区二区三区av 性色 | 亚洲欧洲日本无在线码 | 亚洲第一网站男人都懂 | 国产无遮挡吃胸膜奶免费看 | 国产精品久久福利网站 | 国产亚洲精品精品国产亚洲综合 | 日日天日日夜日日摸 | 亚洲日韩精品欧美一区二区 | 久久久久成人片免费观看蜜芽 | 国产偷国产偷精品高清尤物 | 国产高潮视频在线观看 | 成人av无码一区二区三区 | 久久精品国产一区二区三区 | 3d动漫精品啪啪一区二区中 | 久久精品人人做人人综合试看 | 国产一区二区三区精品视频 | 国产在线精品一区二区高清不卡 | 青春草在线视频免费观看 | 97夜夜澡人人双人人人喊 | 亚洲大尺度无码无码专区 | 亚洲s码欧洲m码国产av | 荫蒂添的好舒服视频囗交 | 性欧美牲交在线视频 | 免费无码av一区二区 | 人人妻人人澡人人爽欧美精品 | 欧美老妇交乱视频在线观看 | 国产欧美精品一区二区三区 | av无码不卡在线观看免费 | 又粗又大又硬毛片免费看 | 欧洲精品码一区二区三区免费看 | 伦伦影院午夜理论片 | 国产精品无码成人午夜电影 | 男女猛烈xx00免费视频试看 | 国产香蕉尹人视频在线 | 国产欧美亚洲精品a | 欧洲熟妇色 欧美 | 美女毛片一区二区三区四区 | 欧美人与禽猛交狂配 | 九九热爱视频精品 | 欧美性猛交xxxx富婆 | 又黄又爽又色的视频 | 色一情一乱一伦 | 鲁大师影院在线观看 | 性欧美videos高清精品 | 小sao货水好多真紧h无码视频 | 国产精品久久久久久亚洲影视内衣 | 国产人妻大战黑人第1集 | 日本又色又爽又黄的a片18禁 | 人人超人人超碰超国产 | 天天拍夜夜添久久精品 | 人妻少妇精品无码专区动漫 | 国产成人综合美国十次 | 日日天干夜夜狠狠爱 | 国产午夜亚洲精品不卡 | 俺去俺来也www色官网 | 久久精品成人欧美大片 | 日韩精品无码一本二本三本色 | 亚洲天堂2017无码 | 国产综合色产在线精品 | 精品无码av一区二区三区 | 欧美精品免费观看二区 | 中文字幕无码av波多野吉衣 | 中文亚洲成a人片在线观看 | 国产亚av手机在线观看 | 亚洲精品欧美二区三区中文字幕 | 九九在线中文字幕无码 | 亚洲精品一区二区三区婷婷月 | 真人与拘做受免费视频一 | 亚洲中文字幕乱码av波多ji | 在线观看免费人成视频 | 国产在线精品一区二区高清不卡 | 欧美日韩一区二区综合 | 欧洲美熟女乱又伦 | 伦伦影院午夜理论片 | 成人无码精品1区2区3区免费看 | 成 人 网 站国产免费观看 | 国产真实夫妇视频 | 精品无码国产自产拍在线观看蜜 | 国产超碰人人爽人人做人人添 | 国产肉丝袜在线观看 | 亚洲成熟女人毛毛耸耸多 | 午夜精品久久久久久久 | 男女作爱免费网站 | 窝窝午夜理论片影院 | 国产真实伦对白全集 | 午夜不卡av免费 一本久久a久久精品vr综合 | 欧美老妇与禽交 | 亚洲精品午夜国产va久久成人 | 欧美xxxx黑人又粗又长 | 性色av无码免费一区二区三区 | 熟妇激情内射com | 色综合久久久久综合一本到桃花网 | v一区无码内射国产 | 国产舌乚八伦偷品w中 | 亚洲精品国产精品乱码不卡 | 日本爽爽爽爽爽爽在线观看免 | 九一九色国产 | 又粗又大又硬毛片免费看 | 欧美野外疯狂做受xxxx高潮 | 国产热a欧美热a在线视频 | 无码人妻av免费一区二区三区 | 欧美熟妇另类久久久久久多毛 | 99久久精品国产一区二区蜜芽 | 国产精品二区一区二区aⅴ污介绍 | 精品久久久久久人妻无码中文字幕 | 丰满少妇人妻久久久久久 | 天干天干啦夜天干天2017 | 午夜时刻免费入口 | 国产亚洲视频中文字幕97精品 | 国产在线无码精品电影网 | 四虎国产精品一区二区 | 激情人妻另类人妻伦 | 久久精品视频在线看15 | 高中生自慰www网站 | 夜夜影院未满十八勿进 | 国产精品国产三级国产专播 | 内射后入在线观看一区 | 欧洲精品码一区二区三区免费看 | 天天躁夜夜躁狠狠是什么心态 | 久久久久成人片免费观看蜜芽 | 亚洲精品国产品国语在线观看 | 老子影院午夜伦不卡 | 亚洲中文字幕久久无码 | 精品国产乱码久久久久乱码 | 欧美阿v高清资源不卡在线播放 | 国产无遮挡又黄又爽免费视频 | 久在线观看福利视频 | 国产精品二区一区二区aⅴ污介绍 | 国产人妻久久精品二区三区老狼 | 5858s亚洲色大成网站www | 亚洲精品午夜国产va久久成人 | 无码毛片视频一区二区本码 | 精品一区二区三区无码免费视频 | 伊人久久大香线焦av综合影院 | 蜜桃无码一区二区三区 | 国产香蕉尹人综合在线观看 | 久久精品99久久香蕉国产色戒 | 白嫩日本少妇做爰 | 99久久99久久免费精品蜜桃 | 人妻与老人中文字幕 | 精品欧美一区二区三区久久久 | 纯爱无遮挡h肉动漫在线播放 | 一本无码人妻在中文字幕免费 | 国产超级va在线观看视频 | 激情内射亚州一区二区三区爱妻 | 中文字幕乱码中文乱码51精品 | 国产亚洲精品久久久久久 | 老熟女重囗味hdxx69 | 国产精品人人爽人人做我的可爱 | 亚洲s码欧洲m码国产av | 国产极品美女高潮无套在线观看 | 天天拍夜夜添久久精品大 | 亚洲欧美日韩综合久久久 | 在线观看国产午夜福利片 | 波多野结衣av一区二区全免费观看 | 日本成熟视频免费视频 | 蜜桃视频插满18在线观看 | 成 人影片 免费观看 | 日韩欧美中文字幕公布 | 久久人人爽人人爽人人片ⅴ | 免费无码一区二区三区蜜桃大 | 香港三级日本三级妇三级 | 欧美日韩视频无码一区二区三 | 亚洲中文字幕av在天堂 | 全黄性性激高免费视频 | 女高中生第一次破苞av | 99久久亚洲精品无码毛片 | 人妻互换免费中文字幕 | 宝宝好涨水快流出来免费视频 | 成人一在线视频日韩国产 | 精品一区二区三区波多野结衣 | 亚洲人成网站在线播放942 | 国产av一区二区三区最新精品 | 97人妻精品一区二区三区 | 亚洲欧美综合区丁香五月小说 | 无码福利日韩神码福利片 | 国产一区二区三区精品视频 | 国产三级久久久精品麻豆三级 | 在线欧美精品一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久精品国产一区二区三区肥胖 | 亚洲日韩乱码中文无码蜜桃臀网站 | 人妻少妇精品久久 | 亚洲va中文字幕无码久久不卡 | 欧美日韩综合一区二区三区 | 日韩人妻无码中文字幕视频 | 人妻有码中文字幕在线 | 精品少妇爆乳无码av无码专区 | 国产精品a成v人在线播放 | 欧美一区二区三区视频在线观看 | 亚洲无人区午夜福利码高清完整版 | 小鲜肉自慰网站xnxx | 蜜臀av在线播放 久久综合激激的五月天 | 中文字幕亚洲情99在线 | 人人爽人人爽人人片av亚洲 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲欧洲日本综合aⅴ在线 | 国产精品欧美成人 | 我要看www免费看插插视频 | 福利一区二区三区视频在线观看 | 亚洲人成网站在线播放942 | 色综合久久久久综合一本到桃花网 | 无码精品人妻一区二区三区av | 人人妻人人澡人人爽人人精品 | 亚洲一区二区三区无码久久 | 无码人妻黑人中文字幕 | 久久久精品国产sm最大网站 | 亚洲精品一区二区三区四区五区 | 久久国产精品精品国产色婷婷 | 三上悠亚人妻中文字幕在线 | 成人无码视频在线观看网站 | 无码av最新清无码专区吞精 | 国产激情无码一区二区app | ass日本丰满熟妇pics | 亚洲精品无码国产 | 国产亚洲精品久久久久久国模美 | 国产成人人人97超碰超爽8 | 永久免费观看国产裸体美女 | 99精品无人区乱码1区2区3区 | 亚洲综合无码久久精品综合 | 男女爱爱好爽视频免费看 | 亚洲天堂2017无码 | 在线亚洲高清揄拍自拍一品区 | 日本一卡二卡不卡视频查询 | 妺妺窝人体色www婷婷 | 一二三四在线观看免费视频 | 亚洲熟熟妇xxxx | 成人精品视频一区二区三区尤物 | 天天躁日日躁狠狠躁免费麻豆 | 丝袜美腿亚洲一区二区 | 国产肉丝袜在线观看 | 中文字幕无线码 | а天堂中文在线官网 | 天堂在线观看www | 一个人看的www免费视频在线观看 | 国产精品-区区久久久狼 | 好爽又高潮了毛片免费下载 | 55夜色66夜色国产精品视频 | 欧美成人家庭影院 | 国产69精品久久久久app下载 | 一二三四社区在线中文视频 | 国产又爽又黄又刺激的视频 | ass日本丰满熟妇pics | 熟妇人妻中文av无码 | 国产做国产爱免费视频 | 少妇激情av一区二区 | 国产人妻久久精品二区三区老狼 | 精品亚洲成av人在线观看 | 亚洲欧美综合区丁香五月小说 | 老太婆性杂交欧美肥老太 | 福利一区二区三区视频在线观看 | 久久99精品久久久久久 | 亚洲国产午夜精品理论片 | 偷窥村妇洗澡毛毛多 | 亚洲精品久久久久久久久久久 | 国产成人无码a区在线观看视频app | 久久97精品久久久久久久不卡 | 亚洲日本va中文字幕 | 国产精品无码成人午夜电影 | 又黄又爽又色的视频 | 无码av免费一区二区三区试看 | 国产人妻精品午夜福利免费 | 中文字幕乱码亚洲无线三区 | 18禁黄网站男男禁片免费观看 | 日韩人妻少妇一区二区三区 | 午夜理论片yy44880影院 | 亚洲精品中文字幕乱码 | 性生交片免费无码看人 | 给我免费的视频在线观看 | 亚洲精品一区二区三区大桥未久 | 无码吃奶揉捏奶头高潮视频 | 粗大的内捧猛烈进出视频 | 97久久超碰中文字幕 | 久久亚洲精品中文字幕无男同 | 正在播放东北夫妻内射 | 台湾无码一区二区 | 久久综合香蕉国产蜜臀av | 97色伦图片97综合影院 | 少妇性l交大片欧洲热妇乱xxx | 精品无人区无码乱码毛片国产 | 亚洲综合伊人久久大杳蕉 | 51国偷自产一区二区三区 | 精品无码av一区二区三区 | 国产精品无码成人午夜电影 | 性欧美大战久久久久久久 | 波多野结衣乳巨码无在线观看 | 麻豆成人精品国产免费 | 国产精品美女久久久 | 色婷婷综合激情综在线播放 | 亚洲精品一区二区三区婷婷月 | 国产精品怡红院永久免费 | 一本一道久久综合久久 | 麻豆蜜桃av蜜臀av色欲av | 久久伊人色av天堂九九小黄鸭 | 精品人妻人人做人人爽 | 亚洲色在线无码国产精品不卡 | 中文字幕日产无线码一区 | 一本大道久久东京热无码av | 无码播放一区二区三区 | 欧美日韩在线亚洲综合国产人 | 免费视频欧美无人区码 | 色 综合 欧美 亚洲 国产 | 伊人久久大香线蕉av一区二区 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久久久久久人妻无码中文字幕爆 | 5858s亚洲色大成网站www | 欧美人妻一区二区三区 | 色一情一乱一伦 | 东京一本一道一二三区 | 最近中文2019字幕第二页 | 欧美变态另类xxxx | 婷婷丁香五月天综合东京热 | 亚洲 高清 成人 动漫 | 欧美成人高清在线播放 | 欧美日韩一区二区三区自拍 | 熟妇人妻无乱码中文字幕 | 国产人妻精品午夜福利免费 | 无码中文字幕色专区 | 国产成人无码a区在线观看视频app | 美女毛片一区二区三区四区 | 午夜精品一区二区三区在线观看 | 漂亮人妻洗澡被公强 日日躁 | 亚洲天堂2017无码中文 | 久久人人97超碰a片精品 | 中文字幕乱码人妻二区三区 | 中文无码伦av中文字幕 | av人摸人人人澡人人超碰下载 | 九九综合va免费看 | 久久久亚洲欧洲日产国码αv | 兔费看少妇性l交大片免费 | 少妇人妻偷人精品无码视频 | 亚洲爆乳精品无码一区二区三区 | 一区二区传媒有限公司 | 色婷婷香蕉在线一区二区 | 国产成人久久精品流白浆 | 亚洲精品午夜无码电影网 | 亚洲另类伦春色综合小说 | 国产成人人人97超碰超爽8 | 亚洲国产高清在线观看视频 | 国产无遮挡吃胸膜奶免费看 | 久久精品中文字幕一区 | 桃花色综合影院 | 欧美一区二区三区 | 久久综合九色综合97网 | 久久 国产 尿 小便 嘘嘘 | 999久久久国产精品消防器材 | 色窝窝无码一区二区三区色欲 | 久久久久久久人妻无码中文字幕爆 | 国产乱人伦av在线无码 |