婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python面向對象之成員相關知識總結

Python面向對象之成員相關知識總結

熱門標簽:煙臺電話外呼營銷系統 企業彩鈴地圖標注 如何地圖標注公司 上海正規的外呼系統最新報價 電銷機器人錄音要學習什么 銀川電話機器人電話 長春極信防封電銷卡批發 外賣地址有什么地圖標注 預覽式外呼系統

一、成員

 1.1 變量

  • 實例變量,屬于對象,每個對象中各自維護自己的數據。
  • 類變量,屬于類,可以被所有對象共享,一般用于給對象提供公共數據(類似于全局變量)。
class Person(object):
    country = "中國"
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def show(self):
        # message = "{}-{}-{}".format(Person.country, self.name, self.age)
        message = "{}-{}-{}".format(self.country, self.name, self.age)
        print(message)
 
print(Person.country) # 中國
 
 
p1 = Person("華青水上",20)
print(p1.name)
print(p1.age)
print(p1.country) # 中國
 
p1.show() # 中國-華青水上-20

提示:當把每個對象中都存在的相同的示例變量時,可以選擇把它放在類變量中,這樣就可以避免對象中維護多個相同數據。

易錯點

  • 注意讀和寫的區別。
class Person(object):
    country = "中國"
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def show(self):
        message = "{}-{}-{}".format(self.country, self.name, self.age)
        print(message)
 
print(Person.country) # 中國
 
p1 = Person("華青水上",20)
print(p1.name) # 華青水上
print(p1.age) # 20
print(p1.country) # 中國
p1.show() # 中國-華青水上-20
 
p1.name = "root"     # 在對象p1中講name重置為root
p1.num = 19          # 在對象p1中新增實例變量 num=19
p1.country = "china" # 在對象p1中新增實例變量 country="china"
 
print(p1.country)   # china
print(Person.country) # 中國
class Person(object):
    country = "中國"
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def show(self):
        message = "{}-{}-{}".format(self.country, self.name, self.age)
        print(message)
 
print(Person.country) # 中國
 
Person.country = "美國"
 
 
p1 = Person("華青水上",20)
print(p1.name) # 華青水上
print(p1.age) # 20
print(p1.country) # 美國
  • 繼承關系中的讀寫
class Base(object):
    country = "中國"
 
 
class Person(Base):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def show(self):
        message = "{}-{}-{}".format(Person.country, self.name, self.age)
        # message = "{}-{}-{}".format(self.country, self.name, self.age)
        print(message)
 
 
# 讀
print(Base.country) # 中國
print(Person.country) # 中國
 
obj = Person("華青水上",19)
print(obj.country) # 中國
 
# 寫
Base.country = "china"
Person.country = "泰國"
obj.country = "日本"

1.2 方法

  • 綁定方法,默認有一個self參數,由對象進行調用(此時self就等于調用方法的這個對象)【對象類均可調用】
  • 類方法,默認有一個cls參數,用類或對象都可以調用(此時cls就等于調用方法的這個類)【對象類均可調用】
  • 靜態方法,無默認參數,用類和對象都可以調用。【對象類均可調用】
class Foo(object):
 
    def __init__(self, name,age):
        self.name = name
        self.age = age
 
    def f1(self):
        print("綁定方法", self.name)
 
    @classmethod
    def f2(cls):
        print("類方法", cls)
 
    @staticmethod
    def f3():
        print("靜態方法")
        
# 綁定方法(對象)
obj = Foo("武沛齊",20)
obj.f1() # Foo.f1(obj)
 
 
# 類方法
Foo.f2()  # cls就是當前調用這個方法的類。(類)
obj.f2()  # cls就是當前調用這個方法的對象的類。
 
 
# 靜態方法
Foo.f3()  # 類執行執行方法(類)
obj.f3()  # 對象執行執行方法

在Python中比較靈活,方法都可以通過對象和類進行調用;而在java、c#等語言中,綁定方法只能由對象調用;類方法或靜態方法只能由類調用。

import os
import requests
 
 
class Download(object):
 
    def __init__(self, folder_path):
        self.folder_path = folder_path
 
    @staticmethod
    def download_dou_yin():
        # 下載抖音
        res = requests.get('.....')
 
        with open("xxx.mp4", mode='wb') as f:
            f.write(res.content)
 
    def download_dou_yin_2(self):
        # 下載抖音
        res = requests.get('.....')
        path = os.path.join(self.folder_path, 'xxx.mp4')
        with open(path, mode='wb') as f:
            f.write(res.content)
 
 
obj = Download("video")
obj.download_dou_yin()

1.3 屬性

屬性其實是由綁定方法 + 特殊裝飾器 組合創造出來的,讓我們以后在調用方法時可以不加括號。

class Foo(object):
 
    def __init__(self, name):
        self.name = name
 
    def f1(self):
        return 123
 
    @property
    def f2(self):
        return 123
 
 
obj = Foo("華青水上")
 
v1 = obj.f1()
print(v1)
 
v2 = obj.f2
print(v2)
class Pagination:
    def __init__(self, current_page, per_page_num=10):
        self.per_page_num = per_page_num
        
        if not current_page.isdecimal():
            self.current_page = 1
            return
        current_page = int(current_page)
        if current_page  1:
            self.current_page = 1
            return
        self.current_page = current_page
	
    def start(self):
        return (self.current_page - 1) * self.per_page_num
	
    def end(self):
        return self.current_page * self.per_page_num
 
 
user_list = ["用戶-{}".format(i) for i in range(1, 3000)]
 
# 分頁顯示,每頁顯示10條
while True:
    page = input("請輸入頁碼:")
	
    # page,當前訪問的頁碼
    # 10,每頁顯示10條數據
	# 內部執行Pagination類的init方法。
    pg_object = Pagination(page, 20)
    
    page_data_list = user_list[ pg_object.start() : pg_object.end() ]
    for item in page_data_list:
        print(item)
class Pagination:
    def __init__(self, current_page, per_page_num=10):
        self.per_page_num = per_page_num
 
        if not current_page.isdecimal():
            self.current_page = 1
            return
        current_page = int(current_page)
        if current_page  1:
            self.current_page = 1
            return
        self.current_page = current_page
 
    @property
    def start(self):
        return (self.current_page - 1) * self.per_page_num
 
    @property
    def end(self):
        return self.current_page * self.per_page_num
 
 
user_list = ["用戶-{}".format(i) for i in range(1, 3000)]
 
# 分頁顯示,每頁顯示10條
while True:
    page = input("請輸入頁碼:")
 
    pg_object = Pagination(page, 20)
    page_data_list = user_list[ pg_object.start : pg_object.end ]
    
    for item in page_data_list:
        print(item)

關于屬性的編寫有兩種方式:

  • 方式一,基于裝飾器
class C(object):
    
    @property
    def x(self):
        pass
    
    @x.setter
    def x(self, value):
        pass
    
    @x.deleter
    def x(self):
		pass
        
obj = C()
 
obj.x
obj.x = 123
del obj.x
  • 方式二,基于定義變量
class C(object):
    
    def getx(self): 
		pass
    
    def setx(self, value): 
		pass
        
    def delx(self): 
		pass
        
    x = property(getx, setx, delx, "I'm the 'x' property.")
    
obj = C()
 
obj.x
obj.x = 123
del obj.x

注意:由于屬性和實例變量的調用方式相同,所以在編寫時需要注意:屬性名稱 不要 實例變量 重名。

class Foo(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    @property
    def func(self):
        return 123
 
 
obj = Foo("華青水上", 123)
print(obj.name)

一旦重名,可能就會有報錯。

class Foo(object):
 
    def __init__(self, name, age):
        self.name = name  # 報錯,錯認為你想要調用 @name.setter 裝飾的方法。
        self.age = age
 
    @property
    def name(self):
        return "{}-{}".format(self.name, self.age)
 
 
obj = Foo("華青水上", 123)
class Foo(object):
 
    def __init__(self, name, age):
        self.name = name 
        self.age = age
 
    @property
    def name(self):
        return "{}-{}".format(self.name, self.age) # 報錯,循環調用自己(直到層級太深報錯)
 
    @name.setter
    def name(self, value):
        print(value)
 
 
obj = Foo("華青水上", 123)
print(obj.name)

如果真的想要在名稱上創建一些關系,可以讓實例變量加上一個下劃線。

class Foo(object):
 
    def __init__(self, name, age):
        self._name = name
        self.age = age
 
    @property
    def name(self):
        return "{}-{}".format(self._name, self.age)
 
 
obj = Foo("華青水上", 123)
print(obj._name)
print(obj.name)

二、成員修飾符

Python中成員的修飾符就是指的是:公有、私有。

  • 公有,在任何地方都可以調用這個成員。
  • 私有,只有在類的內部才可以調用改成員(成員是以兩個下劃線開頭,則表示該成員為私有)。
class Foo(object):
 
    def __init__(self, name, age):
        self.__name = name
        self.age = age
 
    def get_data(self):
        return self.__name
 
    def get_age(self):
        return self.age
 
 
obj = Foo("華青水上", 123)
 
 
# 公有成員
print(obj.age)
v1 = self.get_age()
print(v1)
 
# 私有成員
# print(obj.__name) # 錯誤,由于是私有成員,只能在類中進行使用。
v2 = obj.get_data()
print(v2)

特別提醒:父類中的私有成員,子類無法繼承。

class Base(object):
 
    def __data(self):
        print("base.__data")
 
    def num(self):
        print("base.num")
 
 
class Foo(Base):
 
    def func(self):
        self.num()
        self.__data() # # 不允許執行父類中的私有方法
 
 
obj = Foo()
obj.func()
class Base(object):
 
    def __data(self):
        print("base.__data")
 
    def num(self):
        print("base.num")
        self.__data()  # 不允許執行父類中的私有方法
 
 
class Foo(Base):
 
    def func(self):
        self.num()
 
 
obj = Foo()
obj.func()

按理說私有成員是無法被外部調用,但如果用一些特殊的語法也可以(Flask源碼中有這種寫法,大家寫代碼不推薦這樣寫)。

class Foo(object):
 
    def __init__(self):
        self.__num = 123
        self.age = 19
 
    def __msg(self):
        print(1234)
 
 
obj = Foo()
print(obj.age)
print(obj._Foo__num)
obj._Foo__msg()

成員是否可以作為獨立的功能暴露給外部,讓外部調用并使用。

  • 可以,公有。
  • 不可以,內部其他放的一個輔助,私有。

三、對象嵌套

在基于面向對象進行編程時,對象之間可以存在各種各樣的關系,例如:組合、關聯、依賴等(Java中的稱呼),用大白話來說就是各種嵌套。

情景一:

class Student(object):
    """ 學生類 """
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def message(self):
        data = "我是一名學生,我叫:{},我今年{}歲".format(self.name, self.age)
        print(data)
 
s1 = Student("華青水上", 19)
s2 = Student("殊途同歸", 19)
s3 = Student("春花秋月", 19)
 
 
 
class Classes(object):
    """ 班級類 """
 
    def __init__(self, title):
        self.title = title
        self.student_list = []
 
    def add_student(self, stu_object):
        self.student_list.append(stu_object)
 
    def add_students(self, stu_object_list):
        for stu in stu_object_list:
            self.add_student(stu)
 
    def show_members(self):
        for item in self.student_list:
            # print(item)
            item.message()
 
c1 = Classes("三年二班")
c1.add_student(s1)
c1.add_students([s2, s3])
 
print(c1.title)
print(c1.student_list)

情景二:

class Student(object):
    """ 學生類 """
 
    def __init__(self, name, age, class_object):
        self.name = name
        self.age = age
        self.class_object = class_object
 
    def message(self):
        data = "我是一名{}班的學生,我叫:{},我今年{}歲".format(self.class_object.title, self.name, self.age)
        print(data)
 
 
class Classes(object):
    """ 班級類 """
 
    def __init__(self, title):
        self.title = title
 
 
c1 = Classes("Python全棧")
c2 = Classes("Linux云計算")
 
 
user_object_list = [
    Student("華青水上", 19, c1),
    Student("殊途同歸", 19, c1),
    Student("春花秋月", 19, c2)
]
 
for obj in user_object_list:
    print(obj.name,obj.age, obj.class_object.title)

情景三:

class Student(object):
    """ 學生類 """
 
    def __init__(self, name, age, class_object):
        self.name = name
        self.age = age
        self.class_object = class_object
 
    def message(self):
        data = "我是一名{}班的學生,我叫:{},我今年{}歲".format(self.class_object.title, self.name, self.age)
        print(data)
 
 
class Classes(object):
    """ 班級類 """
 
    def __init__(self, title, school_object):
        self.title = title
        self.school_object = school_object
 
 
class School(object):
    """ 學校類 """
 
    def __init__(self, name):
        self.name = name
 
 
s1 = School("北京校區")
s2 = School("上海校區")
 
c1 = Classes("Python全棧", s1)
c2 = Classes("Linux云計算", s2)
 
user_object_list = [
    Student("華青水上", 19, c1),
    Student("殊途同歸", 19, c1),
    Student("春花秋月", 19, c2)
]
for obj in user_object_list:
    print(obj.name, obj.class_object.title ,  obj.class_object.school_object.name)

四、特殊成員

在Python的類中存在一些特殊的方法,這些方法都是 __方法__ 格式,這種方法在內部均有特殊的含義,接下來我們來講一些常見的特殊成員:

  • __init__,初始化方法
class Foo(object):
    def __init__(self, name):
        self.name = name
 
 
obj = Foo("華青水上")
  • __new__,構造方法
class Foo(object):
    def __init__(self, name):
        print("第二步:初始化對象,在空對象中創建數據")
        self.name = name
 
    def __new__(cls, *args, **kwargs):
        print("第一步:先創建空對象并返回")
        return object.__new__(cls)
 
 
obj = Foo("華青水上")
  • __call__
class Foo(object):
    def __call__(self, *args, **kwargs):
        print("執行call方法")
 
 
obj = Foo()
obj()
  • __str__
class Foo(object):
 
    def __str__(self):
        return "哈哈哈哈"
 
 
obj = Foo()
data = str(obj)
print(data)
  • __dict__
class Foo(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
 
obj = Foo("華青水上",19)
print(obj.__dict__)
  • __getitem____setitem____delitem__
class Foo(object):
 
    def __getitem__(self, item):
        pass
 
    def __setitem__(self, key, value):
        pass
 
    def __delitem__(self, key):
        pass
 
 
obj = Foo("華青水上", 19)
 
obj["x1"]
obj['x2'] = 123
del obj['x3']
  • __enter____exit__
class Foo(object):
 
    def __enter__(self):
        print("進入了")
        return 666
 
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("出去了")
 
 
obj = Foo()
with obj as data:
    print(data)

# 面試題(補充代碼,實現如下功能)

class Context:
 
    def __enter__(self):
        return self        
 
    def __exit__(self, exc_type, exc_val, exc_tb):
        pass
 
    def do_something(self):      # __enter__返回self才可以調用執行do_something方法
        pass
 
 
with Context() as ctx:
    ctx.do_something()

上述面試題屬于上下文管理的語法

  • __add__
class Foo(object):
    def __init__(self, name):
        self.name = name
 
    def __add__(self, other):
        return "{}-{}".format(self.name, other.name)
 
 
v1 = Foo("alex")
v2 = Foo("sb")
 
# 對象+值,內部會去執行 對象.__add__方法,并將+后面的值當做參數傳遞過去。
v3 = v1 + v2
print(v3)
  • __iter__

迭代器

# 迭代器類型的定義:
    1.當類中定義了 __iter__ 和 __next__ 兩個方法。
    2.__iter__ 方法需要返回對象本身,即:self
    3. __next__ 方法,返回下一個數據,如果沒有數據了,則需要拋出一個StopIteration的異常。
	官方文檔:https://docs.python.org/3/library/stdtypes.html#iterator-types
        
# 創建 迭代器類型 :
	class IT(object):
        def __init__(self):
            self.counter = 0
 
        def __iter__(self):
            return self
 
        def __next__(self):
            self.counter += 1
            if self.counter == 3:
                raise StopIteration()
            return self.counter
 
# 根據類實例化創建一個迭代器對象:
    obj1 = IT()
    
    # v1 = obj1.__next__()
    # v2 = obj1.__next__()
    # v3 = obj1.__next__() # 拋出異常
    
    v1 = next(obj1) # obj1.__next__()
    print(v1)
 
    v2 = next(obj1)
    print(v2)
 
    v3 = next(obj1)
    print(v3)
 
 
    obj2 = IT()
    for item in obj2:  # 首先會執行迭代器對象的__iter__方法并獲取返回值,一直去反復的執行 next(對象) 
        print(item)    

迭代器對象支持通過next取值,如果取值結束則自動拋出StopIteration。

for循環內部在循環時,先執行__iter__方法,獲取一個迭代器對象,然后不斷執行的next取值(有異常StopIteration則終止循環)。

生成器

# 創建生成器函數
    def func():
        yield 1
        yield 2
    
# 創建生成器對象(內部是根據生成器類generator創建的對象),生成器類的內部也聲明了:__iter__、__next__ 方法。
    obj1 = func()
    
    v1 = next(obj1)
    print(v1)
 
    v2 = next(obj1)
    print(v2)
 
    v3 = next(obj1)
    print(v3)
 
 
    obj2 = func()
    for item in obj2:
        print(item)

如果按照迭代器的規定來看,其實生成器類也是一種特殊的迭代器類(生成器也是一個中特殊的迭代器)。

可迭代對象

# 如果一個類中有__iter__方法且返回一個迭代器對象 ;則我們稱以這個類創建的對象為可迭代對象。
 
class Foo(object):
    
    def __iter__(self):
        return 迭代器對象(生成器對象)
    
obj = Foo() # obj是 可迭代對象。
 
# 可迭代對象是可以使用for來進行循環,在循環的內部其實是先執行 __iter__ 方法,獲取其迭代器對象,然后再在內部執行這個迭代器對象的next功能,逐步取值。
for item in obj:
    pass

可迭代對象是可以使用for來進行循環,在循環的內部其實是先執行 __iter__ 方法,獲取其迭代器對象,然后再在內部執行這個迭代器對象的next功能,逐步取值。

class IT(object):
    def __init__(self):
        self.counter = 0
 
    def __iter__(self):
        return self
 
    def __next__(self):
        self.counter += 1
        if self.counter == 3:
            raise StopIteration()
        return self.counter
 
 
class Foo(object):
    def __iter__(self):
        return IT()
 
 
obj = Foo() # 可迭代對象
 
 
for item in obj: # 循環可迭代對象時,內部先執行obj.__iter__并獲取迭代器對象;不斷地執行迭代器對象的next方法。
    print(item)
# 基于可迭代對象迭代器實現:自定義range
class IterRange(object):
    def __init__(self, num):
        self.num = num
        self.counter = -1
 
    def __iter__(self):
        return self
 
    def __next__(self):
        self.counter += 1
        if self.counter == self.num:
            raise StopIteration()
        return self.counter
 
 
class Xrange(object):
    def __init__(self, max_num):
        self.max_num = max_num
 
    def __iter__(self):
        return IterRange(self.max_num)
 
 
obj = Xrange(100)
 
for item in obj:
    print(item)
class Foo(object):
    def __iter__(self):
        yield 1
        yield 2
 
 
obj = Foo()
for item in obj:
    print(item)
# 基于可迭代對象生成器 實現:自定義range
 
class Xrange(object):
    def __init__(self, max_num):
        self.max_num = max_num
 
    def __iter__(self):
        counter = 0
        while counter  self.max_num:
            yield counter
            counter += 1
 
 
obj = Xrange(100)
for item in obj:
    print(item)

常見的數據類型:

from collections.abc import Iterator, Iterable
 
v1 = [11, 22, 33]
print( isinstance(v1, Iterator) )  # false,判斷是否是迭代器;判斷依據是__iter__ 和 __next__。
v2 = v1.__iter__()
print( isinstance(v2, Iterator) )  # True
 
 
 
v1 = [11, 22, 33]
print( isinstance(v1, Iterable) )  # True,判斷依據是是否有 __iter__且返回迭代器對象。
 
v2 = v1.__iter__()
print( isinstance(v2, Iterable) )  # True,判斷依據是是否有 __iter__且返回迭代器對象。

至此,Python進階面向對象之成員總結完畢,如有不當之處歡迎指正。

到此這篇關于Python面向對象之成員相關知識總結的文章就介紹到這了,更多相關Python成員內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 簡單談談Python面向對象的相關知識
  • Python面向對象實現方法總結
  • 淺析Python面向對象編程
  • python中什么是面向對象
  • Python中關于面向對象概念的詳細講解

標簽:宜昌 潮州 佳木斯 珠海 西寧 盤錦 上饒 湖北

巨人網絡通訊聲明:本文標題《Python面向對象之成員相關知識總結》,本文關鍵詞  Python,面向,對,象之,成員,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python面向對象之成員相關知識總結》相關的同類信息!
  • 本頁收集關于Python面向對象之成員相關知識總結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91美女精品福利| 欧美日本一区二区三区| 91浏览器入口在线观看| 欧美一区二区三区免费视频| 久久久美女艺术照精彩视频福利播放| 亚洲欧洲日韩女同| 国产一区二区三区在线观看精品 | 久久久久久久久久久久久女国产乱 | 久久久91精品国产一区二区精品| 日韩一区在线免费观看| 久久精品理论片| 欧美美女一区二区| 亚洲视频一二三区| 韩国成人福利片在线播放| 91精品国产一区二区| 亚洲欧美日韩国产综合在线| 激情综合网最新| 欧美高清激情brazzers| 亚洲综合色网站| 成人av网站在线观看| 国产视频911| 狠狠色伊人亚洲综合成人| 欧美精选一区二区| 亚洲va中文字幕| 99久久国产综合精品女不卡| 久久免费国产精品| 国产成人亚洲精品狼色在线| 精品99久久久久久| 久久精品国产一区二区| 日韩欧美www| 蜜臀91精品一区二区三区| 欧美日本国产视频| 日韩精品一二三四| 欧美日韩国产中文| 亚洲成人激情自拍| 欧美丰满美乳xxx高潮www| 亚洲综合区在线| 欧美亚洲免费在线一区| 亚洲国产另类精品专区| 91精品国产综合久久久久| 午夜欧美大尺度福利影院在线看| 欧美片网站yy| 青青草精品视频| 欧美xxxxxxxxx| 国产精品一二一区| 国产精品亲子伦对白| 91蜜桃网址入口| 一区二区三区在线影院| 欧美日韩国产经典色站一区二区三区| 亚洲国产精品人人做人人爽| 51精品国自产在线| 日韩va欧美va亚洲va久久| 久久综合色之久久综合| 成人午夜伦理影院| 亚洲自拍另类综合| 91麻豆精品国产91久久久使用方法| 日韩中文字幕1| 精品国产一区二区亚洲人成毛片 | 久久免费精品国产久精品久久久久 | 欧洲亚洲精品在线| 性欧美疯狂xxxxbbbb| 精品av综合导航| 91小视频免费看| 日本三级亚洲精品| 国产精品久久久久aaaa樱花| 欧美亚洲愉拍一区二区| 九色|91porny| 樱桃国产成人精品视频| 精品久久久久av影院 | 国产在线一区观看| 日韩毛片精品高清免费| 日韩一区二区三区av| 91亚洲精品久久久蜜桃网站 | 成人黄色大片在线观看| 亚洲在线视频一区| 精品久久五月天| 91黄视频在线观看| 国产精品一区二区三区乱码| 亚洲一卡二卡三卡四卡五卡| 精品少妇一区二区三区免费观看| 色国产精品一区在线观看| 精品一区二区三区视频| 亚洲精品视频一区二区| 中文字幕av在线一区二区三区| 欧美日产国产精品| 91玉足脚交白嫩脚丫在线播放| 国产美女主播视频一区| 日韩成人一区二区三区在线观看| 国产精品欧美一区喷水| 久久精品亚洲麻豆av一区二区 | 久久久久久免费网| 777欧美精品| 91国产免费观看| www.激情成人| 丰满亚洲少妇av| 国产一区二区成人久久免费影院| 午夜免费欧美电影| 污片在线观看一区二区| 亚洲精品乱码久久久久久久久| 国产天堂亚洲国产碰碰| 久久综合久色欧美综合狠狠| 日韩精品一区二区三区视频| 欧美精品在欧美一区二区少妇| 欧美午夜一区二区| 色妹子一区二区| 91美女片黄在线观看| 99国产精品久久久| jlzzjlzz欧美大全| 成人免费高清在线观看| 成人免费av网站| 99久久精品国产一区| 99久久er热在这里只有精品66| 高清shemale亚洲人妖| 国产盗摄视频一区二区三区| 国产麻豆9l精品三级站| 国产精品一级片在线观看| 国产成人午夜视频| 成人精品一区二区三区四区| 99久久精品国产导航| 色狠狠一区二区| 在线观看亚洲成人| 欧美精品1区2区3区| 3d成人h动漫网站入口| 欧美一区二区三级| 日韩三级伦理片妻子的秘密按摩| 91精品国产色综合久久| 日韩精品一区二区三区三区免费| 日韩美女一区二区三区| 久久久天堂av| 亚洲视频电影在线| 性久久久久久久| 美洲天堂一区二卡三卡四卡视频| 免费成人av资源网| 国产成人免费视频精品含羞草妖精| 国产伦精品一区二区三区在线观看 | 老司机一区二区| 九九精品视频在线看| 国产成人精品免费视频网站| av爱爱亚洲一区| 欧美午夜片在线观看| 精品三级在线看| 亚洲色大成网站www久久九九| 一区二区免费视频| 精品在线播放免费| www.日韩av| 51精品视频一区二区三区| 中文字幕不卡在线| 亚洲制服丝袜在线| 国产伦精品一区二区三区在线观看 | 成人午夜激情片| 欧美在线制服丝袜| 久久综合九色综合97_久久久| 亚洲美女屁股眼交3| 国内精品伊人久久久久av影院| 99re热视频这里只精品| 精品日韩99亚洲| 亚洲国产欧美在线| 成人免费的视频| 日韩精品一区二区在线观看| 亚洲日本va在线观看| 久久精品99国产国产精| 色国产精品一区在线观看| 国产无人区一区二区三区| 天天av天天翘天天综合网色鬼国产 | 欧美激情艳妇裸体舞| 日韩国产高清影视| 99久久精品久久久久久清纯| 日韩精品一区二区三区四区视频| 一区二区三区四区视频精品免费| 狠狠网亚洲精品| 欧美大黄免费观看| 日日骚欧美日韩| 91丨九色丨黑人外教| 国产色综合一区| 人人超碰91尤物精品国产| 91毛片在线观看| 亚洲视频一区二区在线| 国产一区二区三区在线观看精品 | 国产偷国产偷精品高清尤物 | 午夜精品一区二区三区电影天堂 | 精品电影一区二区| 午夜精品久久久久久久| 91福利国产精品| 亚洲欧洲另类国产综合| 大桥未久av一区二区三区中文| 在线不卡一区二区| 亚洲一区二区三区四区在线观看| 99精品欧美一区二区三区小说| 久久蜜桃一区二区| 国产精品一区一区三区| 国产丝袜美腿一区二区三区| 国产精一区二区三区| 26uuu亚洲综合色| 韩国三级在线一区| 国产欧美精品一区aⅴ影院| 国产精品1区二区.| 国产精品无人区| 91视频国产资源| 悠悠色在线精品| 91精品婷婷国产综合久久性色|