日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python_面向对象

發(fā)布時間:2025/4/16 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python_面向对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

面向?qū)ο缶幊?br />?? ?object(對象)
?? ?什么是對象
?? ??? ?對象是指現(xiàn)實中的物體或?qū)嵨?br />?? ?什么是面向?qū)ο?br />?? ??? ?把一切看成對象(實例),讓對象和對象之間建立關(guān)聯(lián)關(guān)系
?? ?對象都有什么特征
?? ??? ?對象有很多屬性(名詞),用變量記錄屬性
?? ??? ??? ?姓名,年齡,性別等
?? ??? ?對象有很多行為(動作,動詞),用函數(shù)(方法)表示行為
?? ??? ??? ?學(xué)習(xí),吃飯,睡覺,踢球,工作
?? ?什么是類class:
?? ??? ?擁有相同屬性和行為的對象分為一組,即為一個類
?? ??? ?類是用來描述對象的工具,用類可以創(chuàng)建同類對象
?? ?類的創(chuàng)建語句:
?? ??? ?語法:class 類名(繼承列表):
?? ??? ??? ??? ?'''類的文檔字符串'''
?? ??? ??? ??? ?實例方法定義(類內(nèi)的函數(shù)稱為方法method)
?? ??? ??? ??? ?類變量定義
?? ??? ??? ??? ?類方法定義
?? ??? ??? ??? ?靜態(tài)方法定義
?? ??? ?作用:
?? ??? ??? ?1、創(chuàng)建一個類
?? ??? ??? ?2、用于描述此類對象的行為和屬性
?? ??? ??? ?3、類用于創(chuàng)建此類的一個或多個對象(實例)

class Dog:#定義一個類,類名為Dogpass dog1 = Dog()#創(chuàng)建Dog類的一個對象 print(id(dog1))#140399880349568 dog2 = Dog()#創(chuàng)建Dog類的另一個對象 print(id(dog2))#140399880349848 #類似于如下語句: int1 = int() int2 = int () View Code

??? 類 和 對象
?? ??? ?類?? |?? ?? 對象????? 實例
?? ?? class? |? object?? instance
?? ?構(gòu)造函數(shù)
?? ??? ?表達(dá)式:類名([創(chuàng)建傳參列表])
?? ??? ?作用:創(chuàng)建這個類的實例對象,并返回此實例對象的引用關(guān)系
?? ?實例(對象)說明
?? ??? ?實例有自己的作用域和名字空間,可以為該實例添加實例變量(屬性)
?? ??? ?實例可以調(diào)用類方法和實例方法
?? ??? ?實例可以訪問類變量和實例變量
?? ?實例方法:
?? ??? ?語法:calss 類名(繼承列表):
?? ??? ??? ??? ?def 實例方法名(self,參數(shù)1,參數(shù)2...):
?? ??? ??? ??? ??? ?'''實例方法的的文檔字符串'''
?? ??? ??? ??? ??? ?語句塊
?? ??? ?作用:用于描述一個對象的行為,讓此類型的全部對象都擁有相同的行為
?? ??? ?說明:
?? ??? ??? ?1、實例方法實質(zhì)是函數(shù),是定義在類內(nèi)的函數(shù)
?? ??? ??? ?2、實例方法至少有一個形參,第一個形參代表調(diào)用這個方法的實例,一般命名為”self“
?? ??? ?實例方法的調(diào)用語法:
?? ??? ??? ?1、實例.實例方法名(調(diào)用傳參)
?? ??? ??? ?2、類名.實例方法名(實例,調(diào)用傳參)

#此實例示意如何用實例方法(method)來描述Dog類的行為 class Dog():def eat(self,food):'''此方法用來描述小狗吃東西的行為'''print("小狗正常吃:",food)def sleep(self,hour):print("小狗睡了",hour,'小時') dog1 = Dog()#創(chuàng)建一個Dog的類的實例 dog1.eat("狗糧") dog1.sleep(1) Dog.eat(dog1,"狗糧")#第二種方法調(diào)用實例方法 #對象不能調(diào)用類內(nèi)沒有的方法 View Code

??? 屬性 attribute(也叫實例變量)
?? ??? ?每個實例都可以有自己的變量,此變量稱為實例變量(也叫屬性)
?? ??? ?屬性的使用語法:實例名.屬性名
?? ??? ?賦值規(guī)則:
?? ??? ??? ?1、首次為屬性賦值,則創(chuàng)建此屬性
?? ??? ??? ?2、再次為屬性賦值,則必改變屬性的綁定關(guān)系
?? ??? ?作用:用來記錄對象自身的數(shù)據(jù)

class Dog:pass #創(chuàng)建第一個對象 dog1 = Dog() dog1.kinds = '京巴' #添加屬性kinds dog1.color = '白色' #添加屬性color dog1.color = '京巴' #改變屬性的綁定關(guān)系 View Code

??? 實例方法和實例變量(屬性)結(jié)合使用

class Dog:def eat(self,food):print("%s的%s正在吃%s"%(self.color,self.kinds,food)) dog1 = Dog() dog1.kinds = '京巴' #添加屬性kinds dog1.color = '白色' #添加屬性color dog1.eat("狗糧")#該語句不能放在kinds和color屬性被添加之前 dog2 = Dog() dog2.kinds = '哈士奇' #添加屬性kinds dog2.color = '黑色' #添加屬性color dog2.eat("包子") View Code

??? 刪除屬性
?? ??? ?用del語句可以刪除一個對象的實例變量
?? ??? ?語法:
?? ??? ??? ?del 對象.實例變量名
?? ??? ?示例:
?? ??? ??? ?class Cat:
?? ??? ??? ??? ?pass
?? ??? ??? ?c1 = Cat()?? ??? ?#創(chuàng)建實例對象
?? ??? ??? ?c1.color = "白色"#添加屬性
?? ??? ??? ?del c1.color? ??? ?#刪除屬性
?? ??? ??? ?print(c1.color)#屬性錯誤

?? ?初始化方法:
?? ??? ?作用:對新創(chuàng)建的對象添加實例變量(屬性)或相應(yīng)的資源
?? ??? ?語法:
?? ??? ??? ?class 類名(繼承列表):
?? ??? ??? ??? ?def __init__(self[,形參列表]):
?? ??? ??? ??? ??? ?語句塊
?? ??? ?說明:
?? ??? ??? ?1、初始化方法名必須為__init__不可改變
?? ??? ??? ?2、初始化方法會在構(gòu)造函數(shù)創(chuàng)建實例后自動調(diào)用,且將實例自身通過第一個參數(shù)self傳入__init__方法
?? ??? ??? ?3、構(gòu)造函數(shù)的實參將通過__init__方法的形參傳入__init__方法中
?? ??? ??? ?4、初始化方法內(nèi)部如果需要返回,則只能返回None

class Car():def __init__(self,c,b,m):#此方法只能怪返回Noneprint("__init__方法被調(diào)用")self.color = cself.brand = bself.model = m#return 1 #TypeError: __init__() should return None, not 'int' car = Car("紅色","奧迪","A4")#Car()構(gòu)造函數(shù)首先創(chuàng)建一個空的(沒有屬性的對象),然后把這個對象傳遞給__init__方法 View Code

? 析構(gòu)方法:
?? ??? ?語法:class 類名(繼承列表):
?? ??? ??? ?def __del__(self):
?? ??? ??? ??? ?語句塊
?? ??? ?說明:析構(gòu)方法在對象銷毀時被自動調(diào)用
?? ??? ?作用:清理此對象所占用的資源
?? ??? ?python不建議在析構(gòu)方法中做任何事情,因為對象銷毀的時間難以確定
?? ?預(yù)置實例屬性:
?? ??? ?__dict__屬性:
?? ??? ??? ?此屬性綁定一個存儲此實例自身實例變量(屬性)的字典,也可以存儲類中的變量,文檔字符串,方法
?? ??? ?示例:
?? ??? ??? ?class Dog():
?? ??? ??? ??? ?pass
?? ??? ??? ?dog = Dog()
?? ??? ??? ?print(dog.__dict__)#{}
?? ??? ??? ?dog.kinds = "aa"
?? ??? ??? ?print(dog.__dict__)#{"kinds":"aa"}
?? ??? ??? ?dog.__dict__["color"]= "red"
?? ??? ?__class__屬性:
?? ??? ??? ?此屬性用來綁定創(chuàng)建此實例的類
?? ??? ??? ?作用:可以借助此屬性來訪問創(chuàng)建此實例的類
?? ??? ??? ?示例:
?? ??? ??? ??? ?class Dog()
?? ??? ??? ??? ??? ?pass
?? ??? ??? ??? ?dog1=Dog()
?? ??? ??? ??? ?dog2 = dog1.__class__()#等同于dog2 = Dog()
?? ? 面向?qū)ο蟮木C合示例
?? ? ?? ?有兩個人:
?? ? ?? ??? ?1、姓名:張三? 年齡:35
?? ? ?? ??? ?2、姓名:李四? 年齡:38
?? ? ?? ?行為:
?? ? ?? ??? ?1、交別人學(xué)東西teach
?? ? ?? ??? ?2、賺錢
?? ? ?? ??? ?3、借錢
?? ? ?? ?事情:
?? ? ?? ??? ?張三 教 李四 學(xué) python
?? ? ?? ??? ?李四 教 張三 學(xué) 跳皮筋
?? ? ?? ??? ?張三 上班賺了 1000 元錢
?? ? ?? ??? ?李四 向 張三 借了 200 元錢

class Person():'''人類,用于描述人的行為和屬性'''def __init__(self,name,age):self.name = nameself.age = ageself.money = 0def teach(self,other,things):print(self.name,"",other.name,"學(xué)",things)def make_money(self,money):self.money+=moneyprint(self.name,"上班賺了",money,"元錢")def borrow_money(self,other,money):if other.money > money:# print(self.name,"",other.name,"借了",money,"元錢")other.money -= moneyself.money += moneyprint(other.name,"沒有錢借給",self.name)def show_info(self):print(self.age,"歲的",self.name,"存有",self.money,"元錢") p1 = Person("張三",35) p2 = Person("李四",38) p1.teach(p2,"python") p2.teach(p1,"跳皮筋") p1.make_money(1000) p2.borrow_money(p1,200) p1.show_info() p2.show_info() # 張三 教 李四 學(xué) python # 李四 教 張三 學(xué) 跳皮筋 # 張三 上班賺了 1000 元錢 # 李四 向 張三 借了 200 元錢 # 張三 沒有錢借給 李四 # 35 歲的 張三 存有 800 元錢 # 38 歲的 李四 存有 200 元錢 View Code

?? ? 用于判斷類的函數(shù):
?? ? ?? ?isinstance(obj,class_or_tuple)返回一個對象obj是否為某個類class或某些類的實例,如果是返回True,否則返回False
?? ? ?? ?type(obj)?? ?返回對象的類型
?? ? 示例:
?? ? ?? ??? ?class Dog:
?? ? ?? ??? ??? ?pass
?? ? ?? ??? ?class Cat:
?? ? ?? ??? ??? ?pass
?? ? ?? ??? ?animal = Dog()
?? ? ?? ??? ?isinstance(animal,Dog) #True
?? ? ?? ??? ?isinstance(animal,Cat) #False
?? ? ?? ??? ?isinstance(animal,(Cat,int,list)) #False
?? ? ?? ??? ?isinstance(animal,(Cat,int,list,Dog)) #True

類變量 class variable(也叫類屬性):
?? ?類變量是類的屬性,此屬性屬于類
?? ?作用:用來記錄類的相關(guān)數(shù)據(jù)
?? ?說明:
?? ??? ?1、類變量可以通過類直接訪問
?? ??? ?2、類變量可以通過類的實例直接訪問
?? ??? ?3、類變量可以通過類的實例的__class__屬性訪問
?? ?實例:
?? ??? ?class Human:
?? ??? ??? ?count = 0 #創(chuàng)建類變量

class Human:count =0 #創(chuàng)建一個類變量 print("Human的類變量count=",Human.count)#0 h1 = Human() print("用h1對象訪問Human的count變量",h1.count)#0 print("用h1對象的__class__屬性訪問Human的count變量",h1.__class__.count)#0 h1.count = 100 #此處hi創(chuàng)建實例變量,通過實例不能通過這樣的方式修改類變量,可以通過__class__屬性來修改 print(h1.count) #100,會優(yōu)先尋找實例變量,如果沒有實例變量才會訪問到類變量 print(Human.count) #0 print(h1.__class__.count) #0 View Code

??? 類變量的應(yīng)用案例:
?? ??? ?用類變量來記錄對象的個數(shù)

class Car:count = 0def __init__(self,info):#創(chuàng)建類變量,用來記錄汽車對象的總數(shù)print(info,"被創(chuàng)建")self.data = info#記錄傳入的數(shù)據(jù)self.__class__.count +=1 #讓車的總數(shù)加1def __del__(self):print(self.data,"被銷毀")self.__class__.count -=1#讓車的總數(shù)減1 print("當(dāng)前汽車總數(shù)是",Car.count) car1 = Car("奧迪") print(Car.count) car2 = Car("奔馳") car3 = Car("大眾") print(Car.count) View Code

類的文檔字符串:
?? ?類內(nèi)的一個沒有賦值給任何變量的字符串是類的文檔字符串
?? ?說明:
?? ??? ?1、類的文檔字符串用類的__doc__屬性可以訪問
?? ??? ?2、類的文檔字符串可以用help()函數(shù)查看
類的__slots__列表:
?? ?作用:限定一個類的實例只能有固定的屬性(實例變量),通常為了防止錯寫屬性名而發(fā)生運(yùn)行時錯誤
?? ?說明:含有__slots__列表的類創(chuàng)建的實例對象沒有__dict__屬性,即此實例不用字典來保存對象的屬性(實例變量)

class Student:__slots__ = ["name","score","aa"]#此處表示該實例對象最多只能有兩個實例變量def __init__(self,name,score):self.name = nameself.score = score s1 = Student("小張",58) print(s1.score) s1.socre = 100 #此處寫錯了屬性名,但在運(yùn)行時不會報錯 ,如果添加了__slots__變量后就會產(chǎn)生AttributeError: 'Student' object has no attribute 'socre' print(s1.score) View Code

類方法 @classmethod
?? ?類方法是描述類的行為的方法,類方法屬于類
?? ?說明:
?? ??? ?1、類方法需要用@classmethod裝飾器定義
?? ??? ?2、類方法至少有一個形參,第一個形參用于綁定類,約定寫為‘cls’
?? ??? ?3、類和該類的實例都可以調(diào)用類方法
?? ??? ?4、類方法不能訪問此類創(chuàng)建的實例的屬性(只能訪問類變量)

class Car:count =0 #類變量 @classmethoddef getTotalCount(cls):'''此方法為類方法,第一個參數(shù)cls,代表調(diào)用此方法的類'''return cls.count@classmethoddef updateCount(cls,number):cls.count += number print(Car.getTotalCount())#用類來調(diào)用類方法 #Car.count += 1 #面向?qū)ο笏枷氩惶岢苯硬僮鲗傩?/span> Car.updateCount(2) print(Car.getTotalCount())c1 = Car() c1.updateCount(100)#類的實例可以訪問類方法,是把c1.__class__傳給cls print(c1.getTotalCount()) View Code

問題:
?? ?1、類方法屬于類
?? ?2、實例方法屬于該類的實例
?? ?3、類內(nèi)能不能有函數(shù),既不屬于類又不屬于類的實例?
靜態(tài)方法 @staticmethos
?? ?靜態(tài)方法不屬于類,也不屬于類的實例,它相當(dāng)于定義在類內(nèi)的普通函數(shù),只是它的作用域?qū)儆陬?/p> class A:@staticmethoddef myadd(x,y):'''此方法為靜態(tài)方法,此方法的形參不需要傳入類或?qū)嵗?/span>'''return x+y print("1+2=",A.myadd(1,2)) a = A() print("100+200=",a.myadd(100,200)) print(myadd(10,20))#NameError: name 'myadd' is not defined View Code

?繼承 inheritance 和? 派生? derived
?? ?什么是繼承/派生
?? ??? ?1、繼承是指從已有的類中衍生出新類,新類具有原有類的行為和屬性,并能擴(kuò)展新的行為和屬性
?? ??? ?2、派生就是從一個已有類中衍生(創(chuàng)建)新類,在新類上可以添加新的屬性和行為
?? ?繼承和派生的目的:
?? ??? ?1、繼承是延續(xù)舊類的功能
?? ??? ?2、派生是為了在舊類的基礎(chǔ)上添加新的功能
?? ?作用:
?? ??? ?1、用繼承派生機(jī)制,可以將一些共有功能加在基類中,實現(xiàn)代碼的共享
?? ??? ?2、在不改變基類的基礎(chǔ)上改變原有的功能
?? ?繼承/派生的名詞:
?? ??? ?基類(base class),超類(super class),父類(father class)
?? ??? ?派生類(derived class),子類(child class)
?? ?單繼承:
?? ??? ?語法:class 類名( 基類名):
?? ??? ??? ??? ?語句塊
?? ??? ?說明:單繼承是指派生類由一個基類衍生出來的類
?? ?繼承說明:
?? ??? ?1、任何類都直接或間接的繼承自object類
?? ??? ?2、object類是一切類的超類(祖類)
?? ?類的__base__屬性:
?? ??? ?__base__屬性用來記錄此類的基類
?? ??? ?說明:類名.__base__ 返回的是繼承的第一個類
?? ?覆蓋 override:
?? ??? ?什么是覆蓋:
?? ??? ??? ?覆蓋是指在有繼承關(guān)系的類中,子類中實現(xiàn)了與基類同名的方法,在子類實例調(diào)用該方法時,實例調(diào)用的是子類中的覆蓋版本的方法,這種現(xiàn)象叫做覆蓋
?? ?問題:當(dāng)覆蓋發(fā)生時,子類對象能否訪問父類中的方法?
?? ??? ?子類對象顯式調(diào)用基類方法的方式:
?? ??? ??? ?基類名.方法名(實例,實際調(diào)用傳參)
?? ??? ?super 函數(shù):
?? ??? ??? ?super(type,obj) 返回綁定超類的實例
?? ??? ??? ?super() 返回綁定超類的實例,等同于:super(__class__,實例方法的第一個參數(shù),必須在方法內(nèi)調(diào)用)

def work(self):print("A.walk()被調(diào)用") class B(A):def work(self):print("B.walk()被調(diào)用")def super_work(self):#此處能調(diào)用超類的work方法#super(B,self).work() #A.walk()#super(__class__,self).work() #A.walk()被調(diào)用,在一個類內(nèi)有一個__class__屬性,super().work() #A.walk(),在一個實例方法中__class__和self 都是已知的可以省略 b = B() b.work() # B.walk()被調(diào)用 b.__class__.__base__.work(b) #A.walk()被調(diào)用,使用顯式的方法調(diào)用超類的方法 super(B,b).work()#A.walk()被調(diào)用,super(B,b)返回的是B類的超類的對象實例 b.super_work() View Code

??? 顯示調(diào)用基類的初始化方法:
?? ??? ?當(dāng)子類中實現(xiàn)了__init__方法時,基類的__init__方法并不會被調(diào)用,此時需要顯式調(diào)用

class Human():def __init__(self,n,a):self.name = nself.age = adef infos(self):print("姓名:",self.name)print("年齡",self.age) class Student(Human):def __init__(self,n,a,s):super().__init__(n,a)#使用超類中的__init__方法給name,age賦值self.score = ss1 = Student("小張",20,100) s1.infos() View Code

用于類的函數(shù):
?? ?issubclass(cls,class_or_tuple):
?? ??? ?判斷一個類是否繼承自其它的類,如果此類cls是class或tuple中的一個派生子類則返回True,否則返回False
?? ?說明:cls是class的子類的子類...也返回True
查看python內(nèi)建類的繼承關(guān)系的方法:
?? ?help(__bulitins__)
封裝 enclosure
?? ?1、封裝是指隱藏類的實現(xiàn)細(xì)節(jié),讓使用者不用關(guān)心這些細(xì)節(jié)
?? ?2、封裝的目的是讓使用者盡可能少的使用實例變量(屬性)進(jìn)行操作
私有屬性:
?? ?python類中,以雙下劃線“__”開頭的,不以雙下劃線結(jié)尾的標(biāo)識符為私有成員,在類的外部無法直接訪問

class A:def __init__(self):self.__p1 = 100#__p1為私有屬性,在類的外部不能調(diào)用def test(self):print(self.__p1)#在類內(nèi)可以調(diào)用私有屬性self.__m1() #A類的方法可以調(diào)用私有方法def __m1(self):'''我是私有方法,只有我自己的類的方法才能調(diào)用我'''print("我是A類的__m1方法") a = A() #print(a.__p1)#在類外看不到__p1屬性,訪問失敗 a.test() #a.__m1() #出錯,無法調(diào)用私有方法 View Code

多態(tài) polymorphic
?? ?字面意思:“多種狀態(tài)”
?? ?多態(tài)是指在繼承/派生關(guān)系的類中,調(diào)用基類對象的方法,實際能調(diào)用子類的覆蓋版本方法的現(xiàn)象叫多態(tài)
?? ?說明:
?? ??? ?多態(tài)調(diào)用的方法與對象相關(guān),不與類型相關(guān)
?? ??? ?Python的全部對象都只有“運(yùn)行時狀態(tài)(動態(tài))”,沒有“C++/Java”里的“編譯時狀態(tài)(靜態(tài))”

class Shape():def draw(self):print("Shape.draw被調(diào)用") class Point(Shape):def draw(self):print("正在畫點") class Circle(Point):def draw(self):print("正在畫圓") def my_draw(s):s.draw() # 此處會調(diào)用誰的方法,此處顯示多態(tài)中的動態(tài) s1 = Circle() s2 = Point() s3 = Shape() my_draw(s1)#正在畫圓 my_draw(s2)#正在畫點 my_draw(s3)#Shape.draw被調(diào)用 View Code

面向?qū)ο蟮木幊陶Z言的特征:
?? ?繼承
?? ?封裝
?? ?多態(tài)
?? ?如:C++(支持多繼承)/ Java /Python(支持多繼承)/Swift /C#
多繼承 multiple inheritance
?? ?多繼承是指一個子類繼承自兩個或兩個以上的基類
?? ?語法:
?? ??? ?class 類名(基類名1,基類名2....):
?? ??? ??? ?語句塊
?? ?說明:
?? ??? ?1、一個子類同時繼承自多個父類,父類中的方法可以同時被繼承下來
?? ??? ?2、如果兩個父類中有同名的方法,而在子類中又沒有覆蓋此方法時,調(diào)用結(jié)果難以確定
?? ?多繼承的問題(缺陷):
?? ??? ?標(biāo)識符(名字空間沖突的問題)
?? ??? ??? ?要謹(jǐn)慎使用多繼承

class Car:def run(self,speed):print("汽車以",speed,"公里/小時的速度行駛") class Plane:def fly(self,height):print("飛機(jī)以海拔",height,"的高度飛行") class PlaneCar(Car,Plane):pass p1 = PlaneCar() p1.fly(10000) p1.run(300) View Code

多繼承的MRO(Method Resolution Order)問題:
?? ?類內(nèi)的__mro__屬性用來記錄繼承方法的查找順序

class A:def m(self):print("A.m()被調(diào)用") class B:def m(self):print("B.m()被調(diào)用") class AB(A,B):pass ab = AB()#多繼承的調(diào)用方法,從左至右,,可以根據(jù)AB.__mro__來查看繼承的順序 ab.m() View Code class A:def m(self):print("A.m()") class B(A):def m(self):print("B.m()") class C(A):def m(self):print("C.m()") class D(B,C):def m(self):print("D.m()") d = D() print(D.__mro__)#(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>) d.m()############################################################################################################################################ class A:def m(self):print("A.m()") class B(A):def m(self):print("B.m()")super().m()# 此處調(diào)用的是C類的方法,在多繼承中super()的窒執(zhí)行順序是按照__mro__的順序來查找的 class C(A):def m(self):print("C.m()") class D(B,C):def m(self):print("D.m()")super().m()#此處調(diào)用B類的m方法 d = D() d.m() print(D.__mro__) # D.m() # B.m() # C.m() # (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

函數(shù)重寫 override:
?? ?重寫是在自定義的類內(nèi)添加相應(yīng)(內(nèi)建函數(shù)的方法)的方法,讓自定義的類生成的對象(實例)像內(nèi)建對象一樣進(jìn)行內(nèi)建的函數(shù)操作

class MyNumber:pass n1 = MyNumber() x = len(n1) print(x) #TypeError: object of type 'MyNumber' has no len() ################################################################################### class MyNumber:def __len__(self):#重寫了len方法,重寫的必須是內(nèi)建函數(shù)的方法return 10 n1 = MyNumber() x = len(n1) #相當(dāng)于x = n1.__len__() print(x) #10 View Code

? 對象轉(zhuǎn)化為字符串函數(shù)重寫
?? ??? ?repr(obj)返回一個代表此對象的表達(dá)式字符串,通常:eval(repr(obj)) == obj
?? ??? ?str(obj)通過給定的對象返回一個字符串(這個字符串通常是給人看的)

class MyNumber:def __init__(self,value):self.data = value n1 = MyNumber(100) print(str(n1))#<__main__.MyNumber object at 0x7f676201cfd0>,相當(dāng)于調(diào)用n1.__str__(self) print(repr(n1))#<__main__.MyNumber object at 0x7f676201cfd0>,相當(dāng)于調(diào)用n1.__repr__(self) ######################################################################################### class MyNumber:def __init__(self,value):self.data = valuedef __str__(self):return "數(shù)字:%d" % self.datadef __repr__(self):return "MyNumber(%d)"% self.data n1 = MyNumber(100) print(str(n1))#數(shù)字:100,相當(dāng)于調(diào)用n1.__str__(self) print(repr(n1))#MyNumber(100),相當(dāng)于調(diào)用n1.__repr__(self) #n2 = eval(str(n1))#SyntaxError: invalid character in identifier n2 = eval(repr(n1))#可以創(chuàng)建n2對象實例 View Code

對象轉(zhuǎn)字符串函數(shù)的重寫方法:
?? ?repr()函數(shù)的重寫方法:
?? ??? ?def __repr__(self):
?? ??? ??? ?return 能夠表達(dá)self內(nèi)容的字符串(可以通過eval()方法反推)
?? ?str()函數(shù)的重寫方法:
?? ??? ?def __str__(self):
?? ??? ??? ?return 人能看懂的字符串
?? ?說明:
?? ??? ?1、str(obj)函數(shù)優(yōu)先調(diào)用obj.__str__()方法返回字符串
?? ??? ?2、如果obj沒有__str__()方法,則調(diào)用obj.__repr__()方法返回的字符串
?? ??? ?3、如果obj沒有__repr__()方法,則調(diào)用object類的__repr__()實例方法顯示<XXXXX>格式的字符串

   4、print(對象)相當(dāng)于print(str(對象)),一個對象(實例)就是首先尋找__str__方法,在尋找__repr__方法
數(shù)值轉(zhuǎn)換函數(shù)的重寫:
?? ?def __complex__(self)?? ??? ?? complex(obj)函數(shù)調(diào)用
?? ?def __int__(self)?? ??? ??? ??? ? ? int(obj)函數(shù)調(diào)用
?? ?def __float__(self)?? ??? ??? ??? ?float(obj)函數(shù)調(diào)用
?? ?def __bool__(self)?? ??? ??? ??? ?bool(obj)函數(shù)調(diào)用

class MyNumber:def __init__(self,value):self.data = valuedef __repr__(self):print("__repr__被調(diào)用")return "MyNumber(%d)"% self.datadef __int__(self):'''此方法int(obj)函數(shù)重載,必須返回整數(shù),此方法通常用于制定自定義對象如何轉(zhuǎn)為整數(shù)的規(guī)則'''return self.data n1 = MyNumber(100) print(type(n1))#<class '__main__.MyNumber'> n = int(n1) #相當(dāng)于n1.__int__(self) print(type(n))#<class 'int'> print(n) View Code

內(nèi)建函數(shù)的重寫:
?? ?__abs__??? ??? ??? ??? ??? ??? ? ?? abs(obj)
?? ?__len__?? ??? ??? ??? ??? ??? ??? ?? len(obj)
?? ?__reversed__?? ??? ??? ??? ??? ? reversed(obj)
?? ?__round__?? ??? ??? ??? ??? ??? ?? round(obj)

'''自定義一個MyList類,與系統(tǒng)內(nèi)建的類一樣,用來保存有先后順序關(guān)系的數(shù)據(jù)''' class MyList():def __init__(self,iterator=[]):self.data = [x for x in iterator]def __repr__(self):return "MyList(%r)" % self.datadef __abs__(self):#return MyList([abs(x) for x in self.data])#上一句語句可以用如下生成器表達(dá)式代替以防止過多的占用內(nèi)存return MyList((abs(x) for x in self.data))def __len__(self):return len(self.data) myl = MyList([1,-2,3,-4]) print(myl)#MyList([1, -2, 3, -4]) print(abs(myl))#MyList([1, 2, 3, 4]) print("原來的列表:",myl)#原來的列表: MyList([1, -2, 3, -4]),原來的列表 myl2 = MyList(range(10)) print("myl2的長度是:",len(myl2))#10 print("myl的長度是:",len(myl)) #4 View Code

布爾測試函數(shù)的重寫:
?? ?格式:def? __bool__(self):
?? ??? ??? ?   ....
?? ?作用:
?? ??? ?1、用于bool(obj)函數(shù)取值
?? ??? ?2、用于if語句真值表達(dá)式中
?? ??? ?3、用于while語句真值表達(dá)式中
?? ?說明:
?? ??? ?1、優(yōu)先調(diào)用__bool__方法取值
?? ??? ?2、如果不存在__bool__方法,則用__len__()方法取值,后判斷是否為零值,如果不為零返回True,否則返回False
?? ??? ?3、如果再沒有__len__方法,則直接返回True

class MyList():def __init__(self,iterator=[]):self.data = [x for x in iterator]def __repr__(self):return "MyList(%r)" % self.datadef __abs__(self):#return MyList([abs(x) for x in self.data])#上一句語句可以用如下生成器表達(dá)式代替以防止過多的占用內(nèi)存return MyList((abs(x) for x in self.data))def __len__(self):print("__len__方法被調(diào)用")return len(self.data) myl = MyList([1,-2,3,-4]) myl2 = MyList([]) print(bool(myl))# True print(bool(myl2))# False if myl2:#在此處會查找__bool__,如果沒有再查找__len__,再沒有直接返回Truepass while myl2:#在此處會查找__bool__,如果沒有再查找__len__,再沒有直接返回Truepass View Code

迭代器(高級):
?? ?什么是迭代器
?? ??? ?可以通過next(it)函數(shù)取值的對象就是迭代器
?? ?迭代器協(xié)議:
?? ??? ?迭代器協(xié)議是指對象能夠使用next函數(shù)獲取下一項數(shù)據(jù),在沒有下一項數(shù)據(jù)是觸發(fā)StopIterator來終止迭代的約定
?? ?實現(xiàn)方法:
?? ??? ?類內(nèi)需要有__next__(self)方法來實現(xiàn)迭代器協(xié)議
?? ?語法形式:
?? ??? ?class MyIterator:
?? ??? ??? ?def __next__(self):
?? ??? ??? ??? ?迭代器協(xié)議的實現(xiàn)
?? ??? ??? ??? ?return 數(shù)據(jù)
什么是可迭代對象:
?? ?1、是指能用iter(obj)函數(shù)返回迭代器的對象(實例)
?? ?2、可迭代對象內(nèi)部一定要定義__iter__(self)方法來返回迭代器
可迭代對象的語法形式:
?? ?class MyIterable:
?? ??? ?def __iter__(self):
?? ??? ??? ?語句塊
?? ??? ??? ?return 迭代器

class MyList:def __init__(self,iterator):'''自定義列表的初始方法,此方法創(chuàng)建一個data實例變量來綁定一個用來存儲數(shù)據(jù)的列表'''self.data = list(iterator)def __repr__(self):'''此方法為了打印此列表的數(shù)據(jù)'''return 'MyList(%r)' % self.datadef __iter__(self):'''有此方法就是可迭代對象,但要求必須返回迭代器'''print("__iter__方法被調(diào)用")return MyListIterator(self.data) class MyListIterator:'''此類用來創(chuàng)建一個迭代器對象,用此迭代器對象可以迭代訪問MyList類型的數(shù)據(jù)'''def __init__(self,iter_data):self.cur = 0 #設(shè)置迭代器的初始值為0代表列表下標(biāo)self.iter_data = iter_datadef __next__(self):'''有此方法的對象才叫迭代器',此方法一定要實現(xiàn)迭代器協(xié)議'''print("__next__方法被調(diào)用")if self.cur >= len(self.iter_data):raise StopIteration#否則尚未迭代完成,需要返回數(shù)據(jù)r = self.iter_data[self.cur]# 拿到要送回去的數(shù)據(jù)self.cur +=1 #將當(dāng)前值向后移動一個單位return r myl = MyList([2,3,5,7]) print(myl) for x in myl:print(x) View Code

?對象的屬性管理函數(shù):
?? ?1、getattr(obj,name[,dafault])?? ?從一個對象得到對象的屬性;gettattr(x,'y')等同于x.y;當(dāng)屬性y不存在時,如果有default參數(shù),則返回default,如果沒有給出default則產(chǎn)生一   個AttributeError錯誤
?? ?2、hasattr(obj,name)?? ? 用給定的name返回obj是否有屬性,如果有返回True,否則返回False,此種做法可以避免在getattr(obj,name)時引發(fā)錯誤
?? ?3、setattr(obj,name,value)? 給對象obj的名為name的屬性設(shè)置相應(yīng)的值value,setattr(x,'y',v)等同于x.y = v
?? ?4、delattr(obj,name) 刪除對象obj中的name屬性,delattr(x,'y')等同于del x.y

class Car:def __init__(self,c,b):self.color = cself.brand = bdef get_car_attr(self,attr_name):'''此方法用于獲取對象的屬性,如果屬性在次對此對象中返回該屬性,如果不在時返回None'''return getattr(self,attr_name,None) c1 =Car("黑色",'Benz') v = c1.get_car_attr('color') if v is None:print("沒有顏色屬性") else:print("顏色是",v) View Code

運(yùn)算符重載:
?? ?什么是運(yùn)算符重載
?? ??? ?讓自定義的類生成的對象(實例)能夠使用運(yùn)算符進(jìn)行操作
?? ?作用:
?? ??? ?1、讓自定義的類的實例像內(nèi)建對象一樣運(yùn)行運(yùn)算符操作
?? ??? ?2、讓程序簡潔易讀
?? ??? ?3、對自定義的對象,將運(yùn)算符賦予新的運(yùn)算規(guī)則


算術(shù)運(yùn)算符的重載:
?? ?__add__(self, rhs)?? ??? ??? ?self +? rhs?? ??? ??? ? 加法
?? ?__sub__(self, rhs)?? ??? ??? ?self -? rhs?? ??? ??? ? 減法
?? ?__mul__(self, rhs)?? ??? ??? ?self *? rhs?? ??? ??? ? 乘法
?? ?__truediv__(self, rhs)?? ??? ?self /? rhs?? ??? ??? ? 除法
?? ?__floordiv__(self, rhs)?? ??? ?self // rhs?? ??? ??? ? 地板出法
?? ?__mod__(self, rhs)?? ??? ??? ?self %? rhs?? ??? ??? ? 求余
?? ?__pow__(self, rhs)?? ??? ??? ?self ** rhs?? ??? ??? ? 冪運(yùn)算
?? ?注意:rhs(right hands side )右手邊

class MyNumber:def __init__(self,v):self.data = vdef __repr__(self):return "MyNumber(%)" % self.data# def myadd(self,other):# v = self.data + other.data# return MyNumber(v)def __add__(self,other):v = self.data + other.datareturn MyNumber(v)def __sub__(self,other):v = self.data - other.datareturn MyNumber(v) n1 = MyNumber(100) n2 = MyNumber(200) #n3 = n1.myadd(n2) n3 = n1 + n2 # 等同于n1.__add__(n2) print(n3)#MyNumber(300) n4 = n3 - n2 #等同于n3.__sub__(n2) print(n4) #MyNumber(100) View Code

反向算數(shù)運(yùn)算符的重載:
?? ?當(dāng)左手邊的類型為內(nèi)建類型,右手邊為自定義類型時,要實現(xiàn)運(yùn)算必須用以下方法重載
?? ?__radd__(self, lhs)?? ??? ??? ?lhs +? self?? ??? ??? ? 加法
?? ?__rsub__(self, lhs)?? ??? ??? ?lhs -? self?? ??? ??? ? 減法
?? ?__rmul__(self, lhs)?? ??? ??? ?lhs *? self?? ??? ??? ? 乘法
?? ?__rtruediv__(self, lhs)?? ??? ?lhs /? self?? ??? ??? ? 除法
?? ?__rfloordiv__(self, lhs)?? ?lhs // self?? ??? ??? ? 地板出法
?? ?__rmod__(self, lhs)?? ??? ??? ?lhs %? self?? ??? ??? ? 求余
?? ?__rpow__(self, lhs)?? ??? ??? ?lhs ** self?? ??? ??? ? 冪運(yùn)算

'''實現(xiàn)兩個自定義列表相加''' class MyList():def __init__(self,iterable):self.data = iterabledef __repr__(self):return 'MyList(%s)' % self.data def __mul__(self,rhs):v = self.data * rhsreturn MyList(v)def __add__(self,other):v = self.data +other.datareturn MyList(v)def __rmul__(self,lhs):return MyList(self.data*lhs)def __iadd__(self,other):self.data.extend(other.data)#此出是改變self本身,返回值為Nonereturn self L1 = MyList([1,2,3]) L2 = MyList([4,5,6]) L3 = L1 + L2 #等同于L1.__add__(L2) print(L3)#MyList([1, 2, 3, 4, 5, 6]) L4 = L2 + L1 print(L4)#MyList([4, 5, 6, 1, 2, 3]) L5 = L1 * 2 #等同于L1.__mul__(2) print(L5)#MyList([1, 2, 3, 1, 2, 3]) #(反方算數(shù)運(yùn)算符)當(dāng)左手邊的類型為內(nèi)建類型,右手邊為自定義類型時,要實現(xiàn)運(yùn)算必須用一下方法重載 L6 = 2* L1 print(L6)#MyList([1, 2, 3, 1, 2, 3]) #符合算數(shù)運(yùn)算符: L1 += L2 #當(dāng)沒有__iadd__方法時,等同于調(diào)用L1 = L1 + L2,在這里又重新創(chuàng)建了一個MyList類的對象 print(L1)#當(dāng)有__iadd__方法時,在這里不會重新創(chuàng)建了一個MyList類的對象,而是在L1實例上改變 View Code

符合賦值運(yùn)算符的重載:
?? ?__iadd__(self, rhs)?? ??? ??? ?self +=? rhs?? ??? ??? ? 加法
?? ?__isub__(self, rhs)?? ??? ??? ?self -=? rhs?? ??? ??? ? 減法
?? ?__imul__(self, rhs)?? ??? ??? ?self *=? rhs?? ??? ??? ? 乘法
?? ?__itruediv__(self, rhs)?? ??? ?self /=? rhs?? ??? ??? ? 除法
?? ?__ifloordiv__(self, rhs)?? ?self //= rhs?? ??? ??? ? 地板出法
?? ?__imod__(self, rhs)?? ??? ??? ?self %=? rhs?? ??? ??? ? 求余
?? ?__ipow__(self, rhs)?? ??? ??? ?self **= rhs?? ??? ??? ? 冪運(yùn)算
比較運(yùn)算符的重載:
?? ?__lt__(self,rhs)?? ??? ??? ?self <?? rhs?? ??? ??? ? 小于
?? ?__le__(self,rhs)?? ??? ??? ?self <=? rhs?? ??? ??? ? 小于等于
?? ?__gt__(self,rhs)?? ??? ??? ?self >?? rhs?? ??? ??? ? 大于
?? ?__ge__(self,rhs)?? ??? ??? ?self >=? rhs?? ??? ??? ? 大于等于
?? ?__eq__(self,rhs)?? ??? ??? ?self ==? rhs?? ??? ??? ? 等于
?? ?__ne__(self,rhs)?? ??? ??? ?self !=? rhs?? ??? ??? ? 不等于
?? ?注:比較運(yùn)算符通常返回True 或 False
?? ??? ?lt:less than??????? le:less or equal
?? ??? ?gt:greater than?? ??? ?gt:gerater or equl
?? ??? ?eq:equal?? ??? ??? ?ne:not equal
位運(yùn)算符重載:
?? ?__invert__(self)?? ??? ??? ?~ self?? ??? ??? ??? ??? ?取反(一元運(yùn)算符)
?? ?__and__(self,rhs)?? ??? ??? ?self? & rhs?? ??? ??? ??? ?位與
?? ?__or__(self,rhs)?? ??? ??? ?self? | rhs?? ??? ??? ??? ?位或
?? ?__xor__(self,rhs)?? ??? ??? ?self? ^ rhs?? ??? ??? ??? ?位異或
?? ?__lshift__(self,rhs)?? ??? ?self? << rhs?? ??? ??? ?左移
?? ?__rshift__(self,rhs)?? ??? ?self? >> rhs?? ??? ??? ?右移
反向位運(yùn)算符重載:
?? ?__rand__(self,lhs)?? ??? ??? ?lhs? & self?? ??? ??? ??? ?位與
?? ?__ror__(self,lhs)?? ??? ??? ?lhs? | self?? ??? ??? ??? ?位或
?? ?__rxor__(self,lhs)?? ??? ??? ?lhs? ^ self?? ??? ??? ??? ?位異或
?? ?__rlshift__(self,lhs)?? ??? ?lhs << self?? ??? ??? ??? ?左移
?? ?__rrshift__(self,lhs)?? ??? ?lhs >> self?? ??? ??? ??? ?右移
?? ?注:當(dāng)左手邊的類型為內(nèi)建類型,右手邊為自定義類型時,使用反向位運(yùn)算符重載
復(fù)合賦值位運(yùn)算符:
?? ?__iand__(self,lhs)?? ??? ??? ?lhs? &= self?? ??? ??? ??? ?位與
?? ?__ior__(self,lhs)?? ??? ??? ?lhs? |= self?? ??? ??? ??? ?位或
?? ?__ixor__(self,lhs)?? ??? ??? ?lhs? ^= self?? ??? ??? ??? ?位異或
?? ?__ilshift__(self,lhs)?? ??? ?lhs <<= self?? ??? ??? ??? ?左移
?? ?__irshift__(self,lhs)?? ??? ?lhs >>= self?? ??? ??? ??? ?右移
一元運(yùn)算符的重載:
?? ?__neg__(self)?? ??? ??? ??? ?- self?? ??? ??? ??? ??? ??? ?負(fù)號
?? ?__pos__(self)?? ??? ??? ??? ?+ self?? ??? ??? ??? ??? ??? ?正號
?? ?__invert__(self)?? ??? ??? ?~ self?? ??? ??? ??? ??? ??? ?取反
?? ?一元運(yùn)算符的重載方法:
?? ??? ?class 類名:
?? ??? ??? ?def __XXX__(self):
?? ??? ??? ??? ?....

class MyList():def __init__(self,iterable):print("__init__被調(diào)用")self.data = iterabledef __repr__(self):return 'MyList(%r)' % self.data def __neg__(self):'''此方法用來制定 - self 返回的規(guī)則'''L = (-x for x in self.data)return MyList(L) L1 = MyList([1,-2,3,-4]) L2 = -L1 print(L2)#MyList([-1, 2, -3, 4]) View Code

運(yùn)算符重載說明:
?? ?運(yùn)算符重載不能改變運(yùn)算符的優(yōu)先級
python類名最好用駝峰命名法:
?? ?MyList?? MyRange?? ??? ?大駝峰(所有單詞首字母大寫,其余小寫)
?? ?getStudentAge?? ??? ??? ?小駝峰(第一個單詞首字母小寫,其他首字母大寫)


in /not in 運(yùn)算符的重載:
?? ?重載方法:
?? ??? ?def __contanins__(self,e)?? ??? ?e in self???? 成員運(yùn)算

class MyList():def __init__(self,iterable):self.data = iterabledef __repr__(self):return 'MyList(%r)' % self.data def __contains__(self,e):'''此方法用來實現(xiàn) in /not in 運(yùn)算符的重載'''print("__contains__被調(diào)用")for x in self.data:if x == e:return Truereturn False L1 = MyList([1,-2,3,-4]) if -2 in L1:print("-2在L1中") else:print("-2不在L中") #當(dāng)MyList的類內(nèi)重載了__contains__方法,則not in 也同時可以使用(將__contains__方法的返回值取反) if 5 not in L1:print("5不在L1中") else:print("-5在L中") View Code

索引和切片運(yùn)算符的重載:
?? ?__getitem__(self,i)?? ??? ?x = self[i]?? ??? ?索引和切片取值
?? ?__setitem__(self,i,v)?? ?self[i] = v???? 索引和切片賦值
?? ?__delitem__(self,i)?? ??? ?del self[i]?? ??? ?del 語句刪除索引
?? ?作用:讓自己定義的類型的對象能夠支持索引和切片操作
slice函數(shù):
?? ?作用:用于創(chuàng)建一個Slice切片對象,此對象存儲一個切片的起始值,終止值和步長信息
?? ?slice(start,stop=None,step=None) 創(chuàng)建一個切片對象
?? ?slice的對象的屬性:
?? ??? ?s.start?? ??? ??? ??? ?切片的起始值,默認(rèn)為None
?? ??? ?s.stop?? ??? ??? ??? ?切片的終止值,默認(rèn)為None
?? ??? ?s.step?? ??? ??? ??? ?切片的步長,默認(rèn)為None

class MyList():def __init__(self,iterable):print("__init__被調(diào)用")self.data = iterabledef __repr__(self):return 'MyList(%r)' % self.data def __getitem__(self,i):print("__getitem__被調(diào)用,i=",i)if type(i) is not int:raise TpyeErrorreturn self.data[i]def __setitem__(self,i,v):self.data[i] = v L1 = MyList([1,-2,3,-4]) v = L1[1] print(v)#-2 L1[1] = 2 print(L1)#MyList([1, 2, 3, -4]) View Code class MyList():def __init__(self,iterable):print("__init__被調(diào)用")self.data = iterabledef __repr__(self):return 'MyList(%r)' % self.data def __getitem__(self,i):print("__getitem__被調(diào)用,i=",i)if type(i) is int:print("正在做索引操作")elif type(i) is slice:print("正在做切片操作")print("起始值:",i.start)print("終止值:",i.stop)print("步長:",i.step)else:raise KeyErrorreturn self.data[i]L1 = MyList([1,-2,3,-4,5,-6])print(L1[::2])#等同于調(diào)用L1[slice(None,None,2)] # __init__被調(diào)用 # __getitem__被調(diào)用,i= slice(None, None, 2) # 正在做切片操作 # 起始值: None # 終止值: None # 步長: 2 # [1, 3, 5] View Code

?類的特殊成員

  1、__call__()方法

class Foo:def __init__(self):print("init")def __call__(self):print("call")Foo()()#首先會執(zhí)行__init__()方法,再執(zhí)行__call__()方法 obj = Foo()#執(zhí)行__init__()方法 obj()#執(zhí)行__call__()方法

?metaclass(類的祖宗)

  1、Python中一切事物都是對象

  2、class Foo:

      pass

    obj = Foo()

    #obj是對象,Foo類的對象

    #Foo類也是一個對象,type的對象

  3、類都是type類的對象,type(...)

def function(self):print("hello world") #創(chuàng)建一個Foo類繼承object,含有func()方法 Foo = type("Foo",(object,),{'func':function}) obj = Foo()obj.func()

?

class MyType(type):def __init__(self,*args,**kwargs):super().__init__(*args,**kwargs)#執(zhí)行父類type的__init__方法print("MyType的__init__")def __call__(self):print("MyType的__call__")obj = self.__new__(self)#self代表Foo,第三步調(diào)用Foo中的new方法,返回Foo的對象self.__init__(obj)#第四步調(diào)用Foo中的__init__方法class Foo(object,metaclass=MyType):#第一步,編譯器執(zhí)行到此處是會調(diào)用MyType的__init__方法def __init__(self):print("Foo的__init__")def __new__(cls,*args,**kwargs):print("Foo中的__new__方法")return object.__new__(cls,*args,**kwargs)#真正創(chuàng)建Foo類的對象的地方 obj = Foo()#第二步,在Foo類(MyTpye類的對象)加(),會執(zhí)行MyType中的__call__方法

?

?

?

?

?

  

轉(zhuǎn)載于:https://www.cnblogs.com/xdl-smile/p/9346948.html

總結(jié)

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

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

日韩精品你懂的 | 欧美成人精品欧美一级乱 | 国产精品久久久精品 | 亚洲精品国产精品国自产观看 | 久久综合视频网 | 在线视频91| 三级av免费| 在线精品视频免费播放 | 一区二区三区不卡在线 | 亚洲视频 一区 | 久久久精品午夜 | 在线免费观看一区二区三区 | 免费黄色av片 | 中文av网站 | 天天搞夜夜骑 | 亚洲欧洲日韩在线观看 | 国产一区二区三区久久久 | 九九在线精品视频 | 日韩久久电影 | 中文字幕在线免费看 | www.久久免费视频 | 久久免费一 | 中文字幕免费 | www.com久久久 | 亚洲一级性| 亚洲综合色激情五月 | 天堂av高清| 国内精品久久久久久久 | 99精品视频免费在线观看 | 人人干在线观看 | 999久久国精品免费观看网站 | 国产精华国产精品 | 天天夜夜操 | 在线电影 你懂得 | 亚洲 精品在线视频 | 久久免费a | 国产精品黄色在线观看 | 国产精品免费观看视频 | 成年人免费在线 | 一区二区三区韩国免费中文网站 | 欧美极品一区二区三区 | 免费高清在线视频一区· | av在线看网站 | 日韩精品视频在线免费观看 | 国产精品不卡在线观看 | 日韩精品一区二区在线 | 91在线免费观看国产 | www.亚洲精品视频 | 97超碰人人爱 | 国产主播大尺度精品福利免费 | 国内综合精品午夜久久资源 | 日韩a在线观看 | 婷婷伊人综合 | 国产一级高清视频 | 日本精品二区 | 精品夜夜嗨av一区二区三区 | 国产成人一二三 | 国产精品九九久久久久久久 | 国产精品久久久久久久久免费看 | 久久久久久久久精 | 精品91在线 | 91精品久久久久久综合乱菊 | 日韩精品一区二区三区中文字幕 | 国产精品麻豆免费版 | .精品久久久麻豆国产精品 亚洲va欧美 | 91精品国产自产在线观看永久 | 国产不卡av在线 | 91九色视频在线播放 | 婷婷丁香视频 | 精品在线亚洲视频 | 午夜私人影院久久久久 | 在线日韩中文 | 欧美一级电影免费观看 | 中文字幕第一页在线视频 | 欧美日韩精品久久久 | 日韩美女一级片 | 99亚洲精品| 国产小视频在线播放 | 丁香婷婷激情国产高清秒播 | www日日夜夜| 日韩字幕| 在线视频 成人 | 国内精品国产三级国产aⅴ久 | 亚洲精品裸体 | 在线观看成人一级片 | 国产视频欧美视频 | 国产精品综合久久久 | 91香蕉嫩草 | 欧美 日韩 国产 成人 在线 | 在线一区电影 | 丁香久久激情 | 国产在线观看99 | 日韩av美女| 在线天堂中文在线资源网 | 亚洲精选视频在线 | 久久涩视频| 91丨九色丨国产在线 | av最新资源| 一区二区理论片 | 超碰在线公开免费 | 精品国产1区二区 | 黄色小说免费观看 | 人人干天天射 | 国产精品video爽爽爽爽 | 久久久久国产精品免费 | 精品国产区| 高清不卡免费视频 | 在线免费看黄网站 | 蜜臀久久99精品久久久久久网站 | 精品一区二区亚洲 | 人人射av | 欧美成亚洲 | 久久免费视频1 | 欧美日韩国产精品一区二区 | 91视频-88av | 国产精品视频永久免费播放 | 97狠狠操| 日韩免费福利 | 久久久久| 国产精品久免费的黄网站 | 国产日韩在线视频 | 亚洲国产网站 | 91欧美精品 | av一区在线 | 九九热国产| 欧美性极品xxxx做受 | 欧美国产一区二区 | 日日夜夜综合网 | 免费观看性生活大片3 | 91成人在线观看喷潮 | 国产色资源 | 不卡电影一区二区三区 | 国产国产人免费人成免费视频 | 欧美在线视频日韩 | 国产麻豆精品传媒av国产下载 | 伊人久久一区 | 亚洲第一色 | 国产玖玖精品视频 | 成人黄色av免费在线观看 | 国产黄色大片 | 国精产品满18岁在线 | 亚洲黄色在线播放 | 五月花丁香婷婷 | 国产精品久久久久毛片大屁完整版 | 成人av电影在线播放 | 久久高清视频免费 | h文在线观看免费 | 国产日韩欧美在线免费观看 | 一区二区三区四区五区在线视频 | 在线天堂中文在线资源网 | 在线视频亚洲 | 国产精品一区在线播放 | 99精品久久只有精品 | 美女免费黄视频网站 | 亚洲视频综合 | 久久久久久国产精品久久 | 国产精品久久久久aaaa九色 | 成人a免费视频 | 亚洲电影一区二区 | 中文字幕在线免费播放 | 亚洲精品玖玖玖av在线看 | 成人四虎影院 | 啪啪免费视频网站 | 午夜免费电影院 | 国产黄色av | 午夜精品久久久久久久久久久久 | 一区二区三区中文字幕在线观看 | 干天天 | 午夜视频不卡 | www.天天成人国产电影 | 国产精品一区二区中文字幕 | 狠狠躁天天躁综合网 | 美女av在线免费 | 99中文字幕在线观看 | 色综合久久悠悠 | 免费亚洲一区二区 | 69亚洲精品 | 午夜三级在线 | 人人射人人爽 | 成人免费网视频 | 99免费在线观看 | 日韩中文字幕第一页 | 在线免费中文字幕 | 狠狠艹夜夜干 | www.夜夜操.com | 国产日本高清 | 亚洲电影免费 | 国产女人18毛片水真多18精品 | 欧美日韩激情视频8区 | 麻豆超碰| 日韩中文字幕免费在线播放 | 精品一区二区三区香蕉蜜桃 | av解说在线 | 在线视频免费观看 | 日日夜夜草 | 欧美一区免费观看 | 一级片免费观看 | 17videosex性欧美 | 免费在线看v | 成年人电影免费在线观看 | 国产午夜精品久久 | 久久久久久综合网天天 | 国产精品九九久久久久久久 | 免费看污污视频的网站 | www.久久久.com | 一区二区三区高清 | 国产精品久久久久久久久久久久久 | 中文字幕国产视频 | 国产69精品久久久久99尤 | 免费看色视频 | 91精品一区二区三区蜜桃 | 亚洲成a人片在线观看网站口工 | www178ccom视频在线 | 91完整视频 | 国产在线精品一区二区不卡了 | 九九导航 | 中文字幕一二三区 | 国产精品久久久久久久久久免费 | 欧美一区二区日韩一区二区 | 久久精品视频在线观看免费 | 中文字幕国产在线 | 麻豆综合网 | 一区二区视频在线播放 | 久草网视频在线观看 | 亚洲狠狠干 | 91成人在线观看高潮 | 精品国产诱惑 | 在线免费av播放 | 婷婷精品国产一区二区三区日韩 | 午夜精品成人一区二区三区 | 免费观看www7722午夜电影 | 国产不卡视频在线 | 91日本在线播放 | 久久久久欠精品国产毛片国产毛生 | 久久成人免费视频 | 日韩欧在线| 欧美日韩裸体免费视频 | 国产成人久久精品77777 | 一区二区三区在线观看免费 | 一区二区 不卡 | 粉嫩av一区二区三区四区 | 香蕉手机在线 | 日韩av网页 | 九九九在线观看 | 国产精品99久久久久久久久久久久 | 日韩高清在线观看 | 中文字幕在线观看免费高清电影 | 国产激情电影综合在线看 | 黄色一级影院 | 日韩综合第一页 | 日韩免费高清在线 | 亚洲国产精品小视频 | 国产五月婷 | 91精品国产成人观看 | 五月综合色婷婷 | 久久久穴 | 五月激情六月丁香 | 亚洲综合精品视频 | 日本中文在线观看 | 亚洲成人精品在线观看 | 国产精品免费大片视频 | 国产99久久久国产精品免费二区 | v片在线看 | 黄色小说在线免费观看 | 欧美日韩免费视频 | www国产亚洲精品久久网站 | 国产美女网 | 国产精品正在播放 | 午夜精品视频一区 | 日日操网| 五月婷婷综合激情网 | 中文在线√天堂 | 超碰97人人爱 | 日韩午夜在线观看 | 97超碰在 | 成年人看片 | 欧美激情综合五月色丁香 | 久久观看免费视频 | 久久久久久久久久久国产精品 | 奇米影视8888在线观看大全免费 | 免费日p视频 | 日日操夜夜操狠狠操 | 午夜久久久久 | 四虎影视精品成人 | 九色porny真实丨国产18 | av在线网站免费观看 | 黄色动态图xx | 精品国产自在精品国产精野外直播 | 亚洲一区动漫 | 免费看黄色91 | 91天堂在线观看 | 国产精品久久9 | 日韩欧美一区二区三区视频 | 中文字幕一区二区在线观看 | 999久久精品 | 久草网视频 | 日韩高清在线一区二区三区 | 成人动漫一区二区三区 | 福利网在线 | 亚洲男男gaygay无套 | 亚洲综合色婷婷 | 国产精品毛片一区视频 | 韩国精品一区二区三区六区色诱 | 婷婷视频在线播放 | 久久tv | 国产精品久久久久久久久久久久久久 | 在线免费av播放 | 亚洲 精品在线视频 | 91麻豆精品国产91久久久更新时间 | 91麻豆精品国产91久久久无限制版 | 91黄色免费看 | 五月天六月婷婷 | 亚洲精品视频观看 | 97人人添人澡人人爽超碰动图 | 91麻豆精品国产自产 | 日韩精品亚洲专区在线观看 | 私人av| 成人中文字幕在线观看 | 蜜臀一区二区三区精品免费视频 | 色吊丝在线永久观看最新版本 | 欧美在线1区 | 欧美激情视频久久 | 国产精品成人一区二区 | 高清久久久 | 成人av中文字幕在线观看 | 国产精品久久久久久久av电影 | 色爽网站 | 欧美日韩综合在线 | 成年人免费看的视频 | 在线免费看黄网站 | 四虎永久国产精品 | 天天操天天干天天插 | 久草视频在线免费 | 日韩免费高清在线 | 干天天 | 五月婷婷毛片 | 国产精品影音先锋 | 国产精品永久在线 | wwwww.国产 | 激情丁香综合五月 | 在线观看精品一区 | 又爽又黄在线观看 | 人人舔人人舔 | 91丨九色丨勾搭 | 国产精品mm | 色婷婷狠狠五月综合天色拍 | 国产啊v在线观看 | 日韩在线观看网址 | 欧美国产日韩一区二区 | 久久精品一区二区三 | 国产精品久久精品 | 精品国产精品国产偷麻豆 | 婷婷色影院 | 99电影 | 人人看97 | 在线视频欧美日韩 | 久久精品久久精品久久39 | 手机成人免费视频 | 亚洲精品五月 | 精品国产一区二区三区免费 | 国产伦精品一区二区三区在线 | 久久综合九色综合久久久精品综合 | 欧美另类交在线观看 | 夜夜骑日日 | www最近高清中文国语在线观看 | 四虎亚洲精品 | 香蕉在线视频观看 | 91成人看片 | 色婷婷综合成人av | 天天做天天爱天天综合网 | 国产精品扒开做爽爽的视频 | 亚洲成人精品久久久 | 日韩91av | 日韩中文免费视频 | 日本三级全黄少妇三2023 | 天天射天天干 | 久久高清免费 | 日韩av一卡二卡三卡 | 97超碰免费在线观看 | 国产亚洲精品久久久久久久久久久久 | 久久黄色网址 | 免费看片网址 | 在线看日韩 | 日本成人黄色片 | av电影 一区二区 | 中文字幕日韩电影 | 欧美精品中文在线免费观看 | 色偷偷中文字幕 | 欧美一级片在线免费观看 | 国产精品久久久久高潮 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲一级黄色大片 | 久久九九九九 | 久久综合九色综合欧美就去吻 | 国产视频第二页 | 国产99久久精品一区二区300 | av看片网 | 免费日韩 精品中文字幕视频在线 | 欧美在线视频一区二区 | 超碰免费97 | 亚洲天堂首页 | 中文在线天堂资源 | 久久涩视频 | 日韩高清在线一区二区三区 | 欧美老人xxxx18 | 亚洲人成人天堂h久久 | 色综合久久久久久久 | 在线韩国电影免费观影完整版 | 国产 视频 久久 | 午夜在线日韩 | 国产黄色精品在线观看 | 在线观看一级 | 国产精品爽爽爽 | 五月婷视频 | 婷婷色吧 | 超碰免费观看 | 91久久人澡人人添人人爽欧美 | 久久午夜免费观看 | 天天草夜夜| 国产日韩精品一区二区 | 国产精品毛片网 | 毛片www| 99久久精品免费看国产四区 | 国产女人18毛片水真多18精品 | 国产色在线视频 | 96久久久 | 国产视频一区二区在线观看 | 久精品视频 | 久久久久北条麻妃免费看 | av在线网站免费观看 | 特级a毛片 | 久草视频在线看 | 伊人狠狠色丁香婷婷综合 | 久久久久久蜜桃一区二区 | 极品美女被弄高潮视频网站 | 99se视频在线观看 | 国产精品18久久久久久不卡孕妇 | 久久激五月天综合精品 | 天天射天天爱天天干 | 久久精品爱视频 | 国产精品12 | 久久国产一二区 | 久久久久久久国产精品影院 | 韩国av一区 | 亚洲情影院 | 国产在线资源 | 探花视频在线观看免费版 | 91豆花在线观看 | 国产群p| 91一区二区三区久久久久国产乱 | 国产精品久久久久一区 | 国产精品av在线免费观看 | 91成人精品一区在线播放69 | 99久久99久久精品国产片果冰 | 亚洲精品在线二区 | 亚洲视频99 | 久久人人爽人人爽人人 | www.97色.com| 特黄特色特刺激视频免费播放 | 97免费在线视频 | 91九色在线观看视频 | 中文有码在线 | 天天操天天射天天爽 | www.天天成人国产电影 | 国产精品美女在线观看 | 福利一区二区 | 国产精品中文 | 精品视频一区在线 | 国产小视频在线看 | 国产美女在线观看 | 91在线www | 日本黄色特级片 | 成人黄色在线电影 | 亚洲精品ww | 麻豆久久久久 | 亚洲人人精品 | 国产亚洲一区二区三区 | 亚洲国产欧美一区二区三区丁香婷 | 国产精品久久久久久久久久妇女 | 国产精品成人免费精品自在线观看 | 在线亚洲精品 | 人人射人人插 | 欧美日韩精品国产 | 91av综合| 亚洲激情影院 | 国产一区在线观看免费 | 免费污片 | 国产伦精品一区二区三区免费 | 国产免费又黄又爽 | 丝袜av一区| 91免费黄视频 | 97成人资源 | 国产精品视频在线观看 | 99精品久久久久 | 成人h视频在线播放 | 国产精品成久久久久三级 | 在线 成人 | 国产精品刺激对白麻豆99 | av电影在线免费 | 欧美激情精品一区 | 亚洲理论片 | 天天操天天射天天操 | 99在线精品视频 | a午夜电影| 成在线播放 | 国产精品麻豆一区二区三区 | 久草精品资源 | 天天射综合网站 | 午夜a区 | 中文字幕在线免费看线人 | 手机在线看片日韩 | 色婷婷激情| 91九色蝌蚪国产 | 一区三区视频在线观看 | 日韩超碰在线 | 在线免费高清一区二区三区 | 麻豆成人网 | 成片免费观看视频 | 日韩在线观看三区 | 毛片网站在线看 | 天干啦夜天干天干在线线 | 久热国产视频 | 精品国产1区2区 | 国产精品久久久久久一区二区三区 | 国产高清区 | 91精品在线看 | 激情五月婷婷综合 | 人人插人人艹 | 99热9| 摸bbb搡bbb搡bbbb | 性日韩欧美在线视频 | 天天综合网 天天综合色 | 久久久电影 | 婷婷丁香六月 | 国产成人一区二区三区电影 | 国产色综合天天综合网 | 国产精品久久久久久久久久久杏吧 | 成人网页在线免费观看 | 天天超碰| 91福利小视频 | 免费成人黄色av | 日韩精品一区二区三区不卡 | 亚洲国产成人高清精品 | 奇米影视999 | 亚洲人成网站精品片在线观看 | 99在线热播精品免费 | 日韩经典一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线天堂v | 夜夜躁日日躁狠狠久久88av | 欧美激情第一页xxx 午夜性福利 | 91av超碰 | 一区二区三区免费在线观看 | 成人作爱视频 | 久久精品99 | 制服丝袜欧美 | 久久精品99国产精品日本 | 国产欧美三级 | 久久福利小视频 | 欧美精品久久久久久久 | 国产又粗又猛又爽又黄的视频先 | 91精品久久久久久综合五月天 | 性色视频在线 | 麻豆 videos| 麻豆国产网站入口 | 韩国av免费 | av在线播放亚洲 | 国产精品美女久久久久久久 | 超碰在线日本 | 97人人澡人人添人人爽超碰 | 久久久综合色 | 久久黄色免费观看 | 久草在线视频首页 | 91精品视频一区 | 77国产精品| 香蕉视频免费在线播放 | 精品人人人| 96av在线视频| 狠狠干网站 | 国产色视频 | 肉色欧美久久久久久久免费看 | 欧美福利视频一区 | 国产精品1000 | 日韩电影在线观看一区二区三区 | 973理论片235影院9 | 国产尤物在线视频 | 91最新视频在线观看 | 国产黄网站在线观看 | 成年人网站免费观看 | 99久久久久国产精品免费 | 天天射,天天干 | 久草网首页 | 99久久99热这里只有精品 | 啪啪资源 | 超碰97人人在线 | 中文字幕91在线 | 99成人在线视频 | 特级西西444www大胆高清无视频 | 99久久精品久久久久久清纯 | 久草免费在线观看视频 | 成人午夜免费福利 | 国产不卡视频在线播放 | 亚洲成人av在线播放 | 日韩动漫免费观看高清完整版在线观看 | avove黑丝| 亚洲人成在线观看 | 成人精品在线 | 免费高清在线观看成人 | 国产精品久久久久久爽爽爽 | 亚洲国产精品一区二区尤物区 | 国产人成一区二区三区影院 | 九九免费在线看完整版 | 亚洲涩综合 | 可以免费看av | av在线观 | 日本精品久久久久 | 亚洲精品免费在线 | 98久久| 亚洲综合视频在线播放 | 久久亚洲私人国产精品va | 久久天天操| 国产精品一区二区在线观看 | 午夜少妇 | 在线看av的网址 | 91夫妻视频| 欧美日韩国产精品一区二区 | 在线观看蜜桃视频 | 国产精品麻豆果冻传媒在线播放 | 日韩中文字幕91 | 久久艹国产 | 国产精品一区二区在线播放 | 日本少妇高清做爰视频 | 亚洲天堂免费视频 | 久久国产热视频 | 久久国产成人午夜av影院潦草 | 亚洲最新视频在线播放 | 精品影院一区二区久久久 | www国产在线 | 四虎国产精品免费观看视频优播 | 欧美一级电影免费观看 | 久草国产在线观看 | 中文字幕av一区二区三区四区 | 久久一级片 | 中文字幕a∨在线乱码免费看 | 99久久999久久久精玫瑰 | 精品国产久 | 久久久久亚洲精品中文字幕 | 日韩区欠美精品av视频 | 精品久久一区二区三区 | 日韩欧美一区视频 | 欧美少妇的秘密 | jizzjizzjizz亚洲 | 国产综合婷婷 | 欧美日韩不卡一区二区 | av丝袜在线 | 激情视频一区二区 | 二区视频在线观看 | 亚洲欧洲精品久久 | 又爽又黄又刺激的视频 | 国产一区二区网址 | 一区二区三区视频 | 在线观看国产日韩欧美 | 免费黄色在线 | 日韩电影精品一区 | 日韩综合在线观看 | 久久精品伊人 | 国产精品a久久久久 | 国产一区二区三区久久久 | 久久久久国产精品一区二区 | 久久久国产影视 | 欧美日韩免费视频 | 日韩精品久久一区二区三区 | 欧美一级片在线免费观看 | 国产1区在线观看 | 在线 视频 一区二区 | 探花视频在线版播放免费观看 | 99在线热播精品免费 | 69视频网站| 一区二区三区在线免费播放 | 欧美激情精品久久久久 | 99精品黄色片免费大全 | 国产精品久久三 | 四月婷婷在线观看 | 久久人人看 | 日韩精品一区二区三区丰满 | 最近日本韩国中文字幕 | 欧美永久视频 | 97色婷婷成人综合在线观看 | 久久久福利视频 | 国产福利91精品张津瑜 | 免费三级骚 | 91视频免费播放 | 欧美日韩精品在线播放 | av大全在线免费观看 | 69久久夜色精品国产69 | 国产精品毛片一区 | 亚洲片在线 | 在线www色 | 亚洲综合干 | 色综合久久综合网 | 最近2019好看的中文字幕免费 | 激情五月网站 | 人人射人人| 99这里有精品 | 亚洲一区 av | 国产精品丝袜久久久久久久不卡 | 在线观看www视频 | 808电影 | 蜜臀久久99精品久久久久久网站 | 欧美日韩三区二区 | 天天干,天天干 | 日本韩国精品一区二区在线观看 | 97在线观看免费观看高清 | 欧美一级久久久久 | 亚洲精品乱码久久 | 亚洲精品字幕在线观看 | 久草在线视频网站 | 欧美日本啪啪无遮挡网站 | www.五月婷 | 亚洲日本三级 | 天天射天天干天天 | 久久精品亚洲综合专区 | 福利一区视频 | 久久少妇 | 天天射天天艹 | 国产一区二区久久精品 | 福利片视频区 | 黄色片网站大全 | 亚洲高清91| а天堂中文最新一区二区三区 | 久草青青在线观看 | 在线三级av| 一区二区三区三区在线 | 亚洲精品视频大全 | 久久高清毛片 | 成年人看片网站 | 日日夜夜网| 国产精品久久久久毛片大屁完整版 | 免费看色网站 | 超碰免费久久 | 日本高清免费中文字幕 | 91大神电影| 日韩精品欧美专区 | 国产日产在线观看 | 国产专区日韩专区 | 一本一道久久a久久综合蜜桃 | 免费在线观看视频一区 | 国产精品九九九九九九 | a级片韩国| 又大又硬又黄又爽视频在线观看 | 久久久www成人免费毛片麻豆 | 久久精品爱爱视频 | 成人动态视频 | 成人午夜电影在线播放 | 99热这里只有精品1 av中文字幕日韩 | 亚洲,国产成人av | 欧美一区二区三区在线播放 | 欧美一级在线观看视频 | 久久精品亚洲精品国产欧美 | 中文字幕亚洲综合久久五月天色无吗'' | 成人免费在线网 | 97国产在线观看 | 国产精品一区二区av日韩在线 | 干av在线 | 久久久久久欧美二区电影网 | 69视频在线播放 | 国产特黄色片 | 久草在线视频免赞 | 国产成人精品久久亚洲高清不卡 | 91毛片在线| 国产精品亚洲视频 | 久久不卡av| a久久免费视频 | 97精品国产一二三产区 | 在线日韩中文字幕 | 天天操夜夜做 | 伊人久久在线观看 | 97超碰资源网 | 九草视频在线观看 | 亚洲成人二区 | 色综合久久88 | 五月激情久久 | 福利片视频区 | 韩国三级一区 | 精品国产成人在线影院 | 国产一级黄色av | 亚洲精品乱码久久久久久蜜桃欧美 | 狠狠干成人综合网 | 亚州免费视频 | av免费电影在线 | 日韩av偷拍 | 国产男女爽爽爽免费视频 | 综合网在线视频 | 日韩av高清 | 国产 色| 五月婷婷av | 91精品久久久久久久99蜜桃 | 天天曰天天干 | 成人在线播放免费观看 | 波多野结衣精品视频 | 久久综合成人网 | 91丨九色丨国产在线 | 五月亚洲综合 | 天天操天天干天天 | 91在线你懂的| 国产精品久久久久久高潮 | 亚洲涩综合 | 亚洲精品午夜视频 | 激情网五月婷婷 | 久草视频在线新免费 | 久久99操 | 国内亚洲精品 | 久久精品美女视频网站 | 国产高清视频免费在线观看 | 成人永久在线 | 一区二区中文字幕在线 | 天天干天天想 | 欧美一级视频免费 | 黄色毛片电影 | 国产精品k频道 | 18+视频网站链接 | 亚洲视频久久久久 | 免费成人在线视频网站 | 九九热精品国产 | 国产精品不卡av | 久久9999久久 | 国产精品第2页 | 97超碰在 | 日本性生活一级片 | 午夜婷婷在线播放 | 午夜视频日本 | 欧美久久久久久久久久久 | 亚洲午夜久久久综合37日本 | 奇米777777 | 精品夜夜嗨av一区二区三区 | 手机看片1042 | 一级α片 | 国产精品久久 | 激情欧美在线观看 | 日日夜夜草 | 免费看黄色大全 | 日本久久91 | 国产小视频在线观看 | 成人国产综合 | 在线观看视频国产一区 | 五月婷婷久久丁香 | 亚洲色图色 | 久久久久美女 | 欧美一区二区三区在线视频观看 | 天天躁日日躁狠狠 | 成人av影视| 91精品久久香蕉国产线看观看 | 亚州精品一二三区 | 中文字幕精品一区 | 久久综合九色综合欧美就去吻 | 国产不卡免费 | 亚洲一区二区高潮无套美女 | 国产精品久久久久久久久久新婚 | 婷婷丁香久久五月婷婷 | 日韩aa视频 | 久久精品国产亚洲aⅴ | 欧美日韩视频在线一区 | 黄色特级片 | av成人动漫| 亚洲精品视频免费看 | 欧美在线不卡一区 | 天天综合操 | 最近免费在线观看 | 日本少妇久久久 | 深夜福利视频一区二区 | 色视频网站在线 | 天天综合色 | 天天搞天天 | 亚洲最大在线视频 | 亚洲精品男人天堂 | 91在线观看欧美日韩 | 国产黄在线看 | 婷五月激情 | 国产精品黄色av | 超碰在线免费福利 | 亚洲精品男人天堂 | 成人免费xxx在线观看 | 日日夜夜人人精品 | 色综合天天狠天天透天天伊人 | 亚洲伊人天堂 | 久久69精品久久久久久久电影好 | 色福利网| 在线激情影院一区 | 麻豆国产精品视频 | 五月婷婷六月综合 | 国产一区二区三区久久久 | 天天操天天射天天操 | 国产伦精品一区二区三区免费 | 国产成人av福利 | 久久成人黄色 | 日韩夜夜爽 | www欧美xxxx | 国产精品视频免费在线观看 | 黄色小网站在线观看 | 狠狠干干 | 亚洲九九| a成人v在线| 国产精品久久久久久久久免费 | 天天碰天天操视频 | 精品96久久久久久中文字幕无 | 手机av在线不卡 | 国产黄在线观看 | 日韩美女黄色片 | 国产精品第一视频 | 久久久久电影网站 | 国产精品ⅴa有声小说 | 国产第一页在线播放 | 日本三级大片 | 97色婷婷成人综合在线观看 | 免费影视大全推荐 | 国产偷国产偷亚洲清高 | 国产第页 | 国产美女被啪进深处喷白浆视频 | 亚洲国产伊人 | 草久热 | 国产精品尤物 | 成人在线免费观看视视频 | 97人人人人 | 亚洲激色 | 国产女做a爱免费视频 | av3级在线 | 亚洲精品在线电影 | 天天干天天做天天爱 | 92国产精品久久久久首页 | 91手机视频| av黄色在线| www.色午夜,com| 色丁香久久 | 亚洲欧美精品一区 | 国产精品久久久久久一区二区三区 | 成人免费观看视频大全 | 波多野结衣资源 | 亚洲午夜精品一区 | 日本乱码在线 | 日韩在线观看网站 | 久草国产在线 | 国产精品99久久免费黑人 | 日韩av影片在线观看 | a黄在线观看 | 亚洲欧美精品一区二区 | 日韩毛片久久久 | 国产呻吟在线 | 天天射天天爱天天干 | 免费看片网址 | 免费av的网站 | 美国av大片| 成人9ⅰ免费影视网站 | 黄www在线观看 | 亚洲欧美日韩国产一区二区 | 国产一区二区在线免费 | 久久久精品久久日韩一区综合 | 91九色蝌蚪视频网站 | 丝袜网站在线观看 | 欧美一级黄大片 | 丰满少妇对白在线偷拍 | 91精品亚洲影视在线观看 | 亚洲 欧洲av | 天天色婷婷| www成人精品| av在线免费观看黄 | 久久久久亚洲国产精品 | av电影免费在线 | 丁香六月伊人 | 人人爽夜夜爽 | 中文字幕日韩在线播放 | 亚洲专区在线播放 | 免费观看一区二区三区视频 | 99久久er热在这里只有精品15 | 日韩高清 一区 | a在线一区 | www.福利 | 在线观看国产www | 亚洲视频 一区 | 99免在线观看免费视频高清 | 福利一区二区三区四区 | av天天在线观看 | 久久欧美在线电影 | 日韩在线短视频 | 欧美精品乱码久久久久久 | 在线日本看片免费人成视久网 | 国产免费成人 | 中字幕视频在线永久在线观看免费 | 毛片在线播放网址 | av一级在线观看 | 久久久精品福利视频 | 一级片免费在线 | 五月激情丁香图片 | 久久天堂精品视频 | 久久久综合电影 | 狠狠色丁香久久婷婷综合丁香 | 四虎国产精品免费 | 国产视频99 | 99视频一区 |