精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 隱藏法寶:雙下劃線 _ _Dunder_ _

開發 前端
對于大多數 Python 開發者來說,他們遇到的第一個 dunder 是?__init__,構造函數方法。當您創建一個類的實例時,這個方法會被自動調用,使用熟悉的語法?MyClass(*args, **kwargs)作為顯式調用?MyClass.__init__(*args, **kwargs)?的快捷方式。

你可能不知道,Python里那些用雙下劃線包裹的"魔法方法"(Dunder方法),其實是提升代碼質量的絕佳工具。但有趣的是,很多經驗豐富的開發者對這些方法也只是一知半解。

先說句公道話: 這其實情有可原。因為在多數情況下,Dunder方法的作用是"錦上添花"——它們能讓代碼更簡潔規范,但不用它們也能完成任務。有時候我們甚至不知不覺就在使用這些特殊方法了。

如果你符合以下任一情況:

  • 經常用Python但不太了解這個特性
  • 像我一樣癡迷編程語言的精妙設計
  • 想讓代碼既專業又優雅

那么,這篇文章就是為你準備的!我們將探索如何巧妙運用這些"魔法方法"來:

  • 大幅簡化代碼邏輯
  • 提升代碼可讀性
  • 寫出更Pythonic的優雅代碼

表象會騙人......即使在 Python 中也是如此!

如果說我在生活中學到了什么,那就是并非所有東西都像第一眼看上去那樣,Python 也不例外。

看一個看似簡單的例子:

class EmptyClass:
  pass

這是我們可以在 Python 中定義的最 “空” 的自定義類,因為我們沒有定義屬性或方法。它是如此的空,你會認為你什么也做不了。

然而,事實并非如此。例如,如果您嘗試創建該類的實例,甚至比較兩個實例是否相等,Python 都不會抱怨:

empty_instance = EmptyClass()
another_empty_instance = EmptyClass()
empty_instance == another_empty_instance
False

當然,這并不是魔法。簡單地說,利用標準的 object 接口,Python 中的任何對象都繼承了一些默認屬性和方法,這些屬性和方法可以讓用戶與之進行最少的交互。

雖然這些方法看起來是隱藏的,但它們并不是不可見的。要訪問可用的方法,包括 Python 自己分配的方法,只需使用 dir() 內置函數。對于我們的空類,我們得到

>>> dir(EmptyClass)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', 
'__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', 
'__str__', '__subclasshook__', '__weakref__']

正是這些方法可以解釋我們之前觀察到的行為。例如,由于該類實際上有一個__init__方法,我們就不應該對我們可以實例化一個該類的對象感到驚訝。

Dunder方法

最后輸出中顯示的所有方法都屬于一個特殊的群體--猜猜看--dunder 方法。dunder 是雙下劃線(double underscore)的縮寫,指的是這些方法名稱開頭和結尾的雙下劃線。

它們之所以特殊,有以下幾個原因:

  1. 它們內置于每個對象中:每個 Python 對象都配備了由其類型決定的一組特定的 dunder 方法。
  2. 它們是隱式調用的:許多 dunder 方法是通過與 Python 本機運算符或內置函數的交互自動觸發的。例如,用 == 比較兩個對象相當于調用它們的 __eq__方法。
  3. 它們是可定制的:您可以覆蓋現有的 dunder 方法,或者為您的類定義新的方法,以便在保留隱式調用的同時賦予它們自定義的行為。

對于大多數 Python 開發者來說,他們遇到的第一個 dunder 是 __init__,構造函數方法。當您創建一個類的實例時,這個方法會被自動調用,使用熟悉的語法 MyClass(*args, **kwargs)作為顯式調用 MyClass.__init__(*args, **kwargs) 的快捷方式。

盡管是最常用的方法,__init__ 也是最專業的 dunder 方法之一。它沒有充分展示 dunder 方法的靈活性和強大功能,而這些方法可以讓您重新定義對象與原生 Python 特性的交互方式。

使對象漂亮

定義一個類來表示商店中出售的物品,并通過指定名稱和價格來創建一個實例。

class Item:
    def __init__(self, name: str, price: float) -> None:
        self.name = name
        self.price = price


item = Item(name="Milk (1L)", price=0.99)

如果我們嘗試顯示 item 變量的內容,會發生什么?現在,Python 所能做的就是告訴我們它是什么類型的對象,以及它在內存中的分配位置:

item
<__main__.Item at 0x00000226C614E870>

試著得到一個信息量更大、更漂亮的輸出!

要做到這一點,我們可以覆蓋 __repr__ dunder,當在交互式 Python 控制臺中鍵入一個類實例時,它的輸出將完全是打印出來的,而且--只要沒有覆蓋另一個 dunder 方法 __str__ --當試圖調用 print() 時也是如此。

注意:通常的做法是讓 __repr__ 提供重新創建打印實例所需的語法。因此,在后一種情況下,我們希望輸出Item(name="Milk(1L)", price=0.99)

class Item:
    def __init__(self, name: str, price: float) -> None:
        self.name = name
        self.price = price

    def __repr__(self) -> str:
        return f"{self.__class__.__name__}('{self.name}', {self.price})"


item = Item(name="Milk (1L)", price=0.99)

item # In this example it is equivalent also to the command: print(item)
Item('Milk (1L)', 0.99)

沒什么特別的吧?你說得沒錯:我們本可以實現同樣的方法,并將其命名為 *my_custom_repr*,而不需要使用indo dunder 方法。然而,雖然任何人都能立即理解 print(item) 或 item 的意思,但 item.my_custom_repr() 這樣的方法也能理解嗎?

定義對象與 Python 本地運算符之間的交互

假設我們想創建一個新類,即 Grocery,它允許我們建立一個 Item 及其數量的集合。

在這種情況下,我們可以使用 dunder 方法來進行一些標準操作,例如

  1. 使用 + 運算符將特定數量的 Item 添加到 Grocery 中
  2. 使用 for 循環直接遍歷 Grocery 類
  3. 使用括號 [] 符號從 Grocery 類中訪問特定的 Item

為了實現這一目標,我們將定義(我們已經看到泛型類默認情況下沒有這些方法)dunder 方法 __add____iter__ 和__getitem__

from typing import Optional, Iterator
from typing_extensions import Self


class Grocery:

    def __init__(self, items: Optional[dict[Item, int]] = None):
        self.items = items or dict()

    def __add__(self, new_items: dict[Item, int]) -> Self:

        new_grocery = Grocery(items=self.items)

        for new_item, quantity in new_items.items():

            if new_item in new_grocery.items:
                new_grocery.items[new_item] += quantity
            else:
                new_grocery.items[new_item] = quantity

        return new_grocery

    def __iter__(self) -> Iterator[Item]:
        return iter(self.items)

    def __getitem__(self, item: Item) -> int:

        if self.items.get(item):
            return self.items.get(item)
        else:
            raise KeyError(f"Item {item} not in the grocery")

初始化一個 Grocery 實例,并打印其主要屬性 items. 的內容。

item = Item(name="Milk (1L)", price=0.99)
grocery = Grocery(items={item: 3})

print(grocery.items)
{Item('Milk (1L)', 0.99): 3}

然后,我們使用 + 運算符添加一個新項目,并驗證更改是否已生效。

new_item = Item(name="Soy Sauce (0.375L)", price=1.99)
grocery = grocery + {new_item: 1} + {item: 2}

print(grocery.items)
{Item('Milk (1L)', 0.99): 5, Item('Soy Sauce (0.375L)', 1.99): 1}

既友好又明確,對嗎?

通過 __iter__ 方法,我們可以按照該方法中實現的邏輯對一個 Grocery 對象進行循環(即,隱式循環將遍歷可遍歷屬性 items 中包含的元素)。

print([item for item in grocery])
[Item('Milk (1L)', 0.99), Item('Soy Sauce (0.375L)', 1.99)]

同樣,訪問元素也是通過定義 __getitem__ 函數來處理的:

>>> grocery[new_item]
1

fake_item = Item("Creamy Cheese (500g)", 2.99)
>>> grocery[fake_item]
KeyError: "Item Item('Creamy Cheese (500g)', 2.99) not in the grocery"

從本質上講,我們為 Grocery 類分配了一些類似字典的標準行為,同時也允許進行一些該數據類型本機無法進行的操作。

增強功能:使類可調用,以實現簡單性和強大功能。

最后,讓我們用一個示例來結束對 dunder 方法的深入探討,展示它們如何成為我們的強大工具。

想象一下,我們實現了一個函數,它可以根據特定輸入執行確定性的慢速計算。為了簡單起見,我們將以一個內置 time.sleep 為幾秒的標識函數為例。

import time 

def expensive_function(input):
    time.sleep(5)
    return input

如果我們對同一輸入運行兩次函數,會發生什么情況?那么,現在計算將被執行兩次,這意味著我們將兩次獲得相同的輸出,在整個執行時間內等待兩次(即總共 10 秒)。

start_time = time.time()

>>> print(expensive_function(2))
>>> print(expensive_function(2))
>>> print(f"Time for computation: {round(time.time()-start_time, 1)} seconds")
2
2
Time for computation: 10.0 seconds

這合理嗎?為什么我們要對相同的輸入進行相同的計算(導致相同的輸出),尤其是在計算過程很慢的情況下?

一種可能的解決方案是將該函數的執行 “封裝 ”在類的 __call__ dunder 方法中。

這使得類的實例可以像函數一樣被調用--這意味著我們可以使用簡單的語法 my_class_instance(\*args,\**kwargs) --同時也允許我們使用屬性作為緩存來減少計算時間。

通過這種方法,我們還可以靈活地創建多個進程(即類實例),每個進程都有自己的本地緩存。

class CachedExpensiveFunction:

    def __init__(self) -> None:
        self.cache = dict()

    def __call__(self, input):
        if input not in self.cache:
            output = expensive_function(input=input)
            self.cache[input] = output
            return output
        else:
            return self.cache.get(input)


start_time = time.time()
cached_exp_func = CachedExpensiveFunction()

>>> print(cached_exp_func(2))
>>> print(cached_exp_func(2))
>>> print(f"Time for computation: {round(time.time()-start_time, 1)} seconds")
2
2
Time for computation: 5.0 seconds

不出所料,函數在第一次運行后會被緩存起來,這樣就不需要進行第二次計算,從而將總時間縮短了一半。

如上所述,如果需要,我們甚至可以創建該類的獨立實例,每個實例都有自己的緩存。

start_time = time.time()
another_cached_exp_func = CachedExpensiveFunction()

>>> print(cached_exp_func(3))
>>> print(another_cached_exp_func (3))
>>> print(f"Time for computation: {round(time.time()-start_time, 1)} seconds")
3
3
Time for computation: 10.0 seconds

dunder 方法是一個簡單而強大的優化技巧,它不僅可以減少冗余計算,還可以通過本地特定實例緩存提供靈活性。

寫在最后

Dunder方法(就是那些用雙下劃線__包裹的特殊方法)在Python中是個很大的話題,而且還在不斷豐富。這篇文章當然沒法面面俱到地講完所有內容。

我寫這些主要是想幫你弄明白兩件事:

  1. Dunder方法到底是什么?
  2. 怎么用它們解決實際編程中常見的問題?

說實話,不是每個程序員都必須掌握這些方法。但就我個人經驗來說,當我真正搞懂它們之后,寫代碼的效率提高了很多。相信對你也會很有幫助。

使用Dunder方法最大的好處就是:

  • 不用重復造輪子
  • 讓代碼更簡潔易讀
  • 更符合Python的編程風格
責任編輯:武曉燕 來源: 數據STUDIO
相關推薦

2023-11-29 18:11:17

Python代碼

2020-09-22 09:41:48

Python下劃線開發

2023-11-09 08:55:17

Python雙下劃線

2021-08-08 22:27:13

Python下劃線方法

2010-03-04 10:35:51

Python下劃線

2024-08-20 16:32:37

python接口自動化

2021-07-31 19:21:34

Python下劃線數值

2021-12-26 22:55:26

Python下劃線編程

2024-08-16 22:00:38

2013-07-24 19:27:45

iOS開發學習自定義帶下劃線文本UI

2020-10-24 11:09:35

Python下劃線用法

2014-05-08 10:36:59

CSS單詞連字符

2021-10-20 07:36:03

Python構造方法

2010-01-20 14:13:33

C++變量

2022-01-27 22:50:01

鏈表雙指針結構

2022-12-19 15:12:34

python運算符

2023-11-30 08:21:33

2024-09-26 10:44:53

MySQL數據庫數據

2015-07-22 17:21:34

Oracle數據字典

2009-07-10 14:58:13

JLabel組件JFC和Swing
點贊
收藏

51CTO技術棧公眾號

极品av少妇一区二区| 成人av观看| 粉嫩绯色av一区二区在线观看| 久久99精品视频一区97| 一本色道久久hezyo无码| 色黄网站在线观看| 黄色日韩网站视频| 777精品视频| 97精品在线播放| 粉嫩久久久久久久极品| 欧美在线999| 亚洲欧洲日本国产| 黄色三级网站在线观看| 爽好多水快深点欧美视频| 久久国产精品久久久| 制服丝袜第二页| 亚洲爽爆av| 欧美日韩在线一区| 老司机激情视频| 成人高清免费观看mv| 国产精品系列在线播放| 国产成人精品在线播放| 久久久久亚洲AV| 不卡中文一二三区| 亚洲国产美女久久久久| 五月六月丁香婷婷| 国产综合色区在线观看| 亚洲欧美国产三级| 四虎影视永久免费在线观看一区二区三区| www日本视频| 免费成人美女在线观看| 午夜精品久久久久久久99黑人 | 精品美女久久久久| 91精品二区| 在线亚洲午夜片av大片| 亚洲男人在线天堂| 欧美区一区二区| 欧美性极品少妇| 国产免费一区二区三区视频| 欧美xxxx黑人又粗又长| 日韩毛片一二三区| 视频一区二区三| 日本午夜在线| av网站免费线看精品| 99re在线国产| 国产免费av观看| 蜜桃av噜噜一区| 国产精品国产自产拍高清av水多| 久久草视频在线| 激情欧美国产欧美| 久久理论片午夜琪琪电影网| 久久青草国产手机看片福利盒子| 国产精品一区二区av| 性生活免费网站| 国产成人一级电影| 亚洲最大av在线| 国产视频www| 国产综合色在线| 91香蕉国产在线观看| 一级α片免费看刺激高潮视频| 国产精品外国| 17婷婷久久www| 国产手机在线视频| 欧美a视频在线观看| 天天综合国产| 另类图片亚洲另类| 国产一区二区视频在线观看免费| 88国产精品视频一区二区三区| 日韩在线视频观看| 日本中文在线视频| 一级毛片免费高清中文字幕久久网| 日韩在线免费av| 成年人网站在线观看视频| 久久精品国产www456c0m| 少妇高潮久久久久久潘金莲| 国产3级在线观看| 亚洲精品成人| 欧美激情视频一区二区| 国产一级在线播放| 亚洲一区久久| 国产精品久久久精品| 一起草av在线| 高清在线不卡av| 精品日产一区2区三区黄免费| 视频一区二区三区国产| 日本一区二区视频在线| 2025韩国大尺度电影| 欧美人与动牲性行为| 欧美日韩亚洲视频| 中文字幕天天干| 久久国际精品| 精品视频在线播放| av在线免费播放网址| 欧美jjzz| 国产极品精品在线观看| 国产精品久久欧美久久一区| 国产成人av资源| 欧美另类高清视频在线| 日韩子在线观看| 亚洲大片在线观看| 在线观看免费视频高清游戏推荐| 亚洲国产中文在线| 国产亚洲a∨片在线观看| 国产一区二区精彩视频| 午夜在线a亚洲v天堂网2018| 成人免费视频在线观看超级碰| 欧美一级视频免费| 中文字幕亚洲一区二区av在线 | 亚洲伊人婷婷| 国产丝袜视频在线播放| 欧美日韩一级二级三级| 完美搭档在线观看| 天天操综合网| 欧美精品第一页在线播放| 毛片视频网站在线观看| 国产高清在线精品| 水蜜桃亚洲精品| 麻豆视频在线看| 日韩三级视频在线看| 国产亚洲精品熟女国产成人| 亚洲午夜精品久久久久久app| 国产精品美女主播| 日本成人一区| 亚洲高清久久久| 看看黄色一级片| 日韩美脚连裤袜丝袜在线| 一色桃子一区二区| 国产一级在线播放| 国产在线麻豆精品观看| 免费看成人av| 九色91在线| 欧美日韩午夜在线视频| 国产精久久一区二区三区| a91a精品视频在线观看| 99www免费人成精品| 91精品专区| 欧美日韩在线视频首页| 中文字幕18页| 激情欧美丁香| 亚洲影视九九影院在线观看| 国产一区二区三区福利| 亚洲一区二区三区四区的| 亚洲36d大奶网| 国产一区二区精品久| 78m国产成人精品视频| 亚洲精品字幕在线观看| 亚洲免费在线看| 国产福利影院在线观看| 在线精品自拍| 欧美福利视频网站| av一级黄色片| 国产精品高潮久久久久无| 国产精品人人妻人人爽人人牛| 久9re热视频这里只有精品| 国产成人av福利| 国产精品视频福利| h片在线观看网站| 欧美日韩三级一区| 99精品全国免费观看| 国产专区一区| 国产乱码精品一区二区三区日韩精品 | 国产精品入口麻豆原神| 人人爽人人av| 国产99久久精品一区二区300| 国产成人综合精品在线| 男人天堂网在线| 欧美丝袜一区二区三区| 人妻无码中文久久久久专区| 狠狠爱www人成狠狠爱综合网| 91在线视频免费| 欧洲一区二区三区| 精品久久一区二区三区| 免费视频一二三区| 国产成人高清在线| 999久久欧美人妻一区二区| 免费精品一区| 欧美一级大片视频| 青草久久伊人| 色婷婷国产精品综合在线观看| 色婷婷在线影院| 日韩电影在线一区二区| 久热国产精品视频一区二区三区| 欧美日韩成人影院| 在线观看视频亚洲| 国产精品久久久久久久免费看 | 亚洲欧美日韩国产综合精品二区| 免费看成人片| 国产精品麻豆成人av电影艾秋| 色999日韩欧美国产| 国内精品国产成人国产三级| 亚洲激情欧美激情| 中文字幕一二三四区| 日韩av电影一区| 在线视频一二三区| 国产精品男女| 国产成人一区二区三区| av在线资源网| 日韩女优毛片在线| av网站中文字幕| 中文字幕五月欧美| 国产xxxx视频| 国产精品亚洲综合色区韩国| 在线一区高清| 青青一区二区| 亚洲在线观看视频| 亚洲欧美一区二区三区| 野花国产精品入口| 精品国产一区二区三区久久| 精品欧美在线观看| 欧美性极品xxxx娇小| 婷婷激情四射网| 91在线精品一区二区三区| 奇米视频888| 国产精品亚洲欧美| 国产精品久久久久久久乖乖| 免费成人av| 97免费资源站| 78精品国产综合久久香蕉| 裸体女人亚洲精品一区| 青青草在线视频免费观看| 91麻豆精品国产91久久久久 | 国产亚洲精品aa| 日韩av福利在线观看| 蜜臀久久久99精品久久久久久| 男人日女人的bb| 欧美日韩伦理在线免费| 懂色中文一区二区三区在线视频| 台湾佬中文娱乐久久久| 欧美成人免费大片| 成人精品一区二区三区免费| 亚洲а∨天堂久久精品9966| 91丨九色丨丰满| 日韩欧美主播在线| 啦啦啦免费高清视频在线观看| 亚洲男人电影天堂| 免费黄色激情视频| 99视频精品在线| 美女日批在线观看| 久久国产精品一区二区| 91看片就是不一样| 亚洲天堂偷拍| 国产精品久久久影院| 精品国产乱码久久久久久果冻传媒 | 青青操国产视频| 2023国产精品| 污污视频在线免费| 美腿丝袜一区二区三区| 丰满人妻中伦妇伦精品app| 亚洲高清在线观看视频| 午夜影院在线观看欧美| 欧美风情第一页| 中文字幕国产精品一区二区| 成人免费无码大片a毛片| 99视频精品免费视频| 无码人妻久久一区二区三区蜜桃 | 欧洲午夜精品久久久| av影视在线看| 欧美精品久久久久a| 老司机在线永久免费观看| 中文字幕欧美精品日韩中文字幕| 你懂的视频在线| 日韩精品视频在线播放| 免费国产黄色片| 日韩成人av一区| 无码国产精品一区二区色情男同 | 5278欧美一区二区三区| √最新版天堂资源网在线| 欧美激情精品久久久久久| 色婷婷视频在线观看| 欧美大秀在线观看| xxxxx性欧美特大| 欧美最顶级丰满的aⅴ艳星| 国产拍在线视频| 91黑丝在线观看| 最近在线中文字幕| 国产日韩精品在线播放| 四虎在线精品| 91精品天堂| 国产 日韩 欧美 综合 一区| 狠狠爱一区二区三区| 精品国产aⅴ| 椎名由奈jux491在线播放| 奇米影视亚洲| 国语对白做受69| 色爱综合区网| 日韩免费观看网站| 欧美影视资讯| 97视频中文字幕| 亚洲1区在线| 日韩免费中文专区| 性欧美69xoxoxoxo| 欧美狂野激情性xxxx在线观| 激情欧美丁香| 91日韩视频在线观看| 乱一区二区av| 91精品国产高清91久久久久久| aaa亚洲精品| 午夜精品福利在线视频| 亚洲网友自拍偷拍| 欧美a视频在线观看| 欧美四级电影网| 高清一区二区三区四区| 亚洲日本欧美中文幕| 免费在线午夜视频| 隔壁老王国产在线精品| 欧美magnet| 91精品天堂| 国产一区二区电影在线观看| 手机看片日韩国产| 免费欧美日韩| 无码人妻久久一区二区三区蜜桃| 久久久久久久网| 日韩三级在线观看视频| 黄色精品一区二区| 色婷婷一区二区三区av免费看| 婷婷综合一区| 亚洲图色在线| 亚洲天堂免费| 少妇一级淫免费放| 白白色 亚洲乱淫| 九一在线免费观看| 亚洲国产精品久久人人爱蜜臀| 亚洲天堂手机版| 日韩av网址在线| 大片免费在线观看| 欧美在线一区二区视频| 国产精品一区二区中文字幕| 小说区图片区图片区另类灬| 一区二区国产精品| 国产伦精品一区二区三区妓女下载 | 成人激情黄色小说| 天天躁夜夜躁狠狠是什么心态| 精品久久久久久久久久久久| 亚洲图片视频小说| 亚洲欧美精品伊人久久| 高端美女服务在线视频播放| 国产99在线播放| 亚洲黄色毛片| 中文字幕永久免费| 亚洲精品视频在线| 夜夜躁很很躁日日躁麻豆| 中文字幕亚洲一区| free欧美| 日韩欧美一区二区三区四区| 亚欧美中日韩视频| 亚洲av成人片色在线观看高潮| 一区二区三区欧美日| 国产欧美日韩成人| 日韩视频一区在线| 日韩黄色三级| 一区二区三区四区| 免播放器亚洲一区| 国产午夜精品理论片在线| 欧美色区777第一页| 国产原创av在线| 国产精品99蜜臀久久不卡二区| 四虎884aa成人精品最新| 久久久久久人妻一区二区三区| 国产精品99久| 日本熟妇乱子伦xxxx| 欧美xxxxx牲另类人与| av免费在线免费| 国产欧美日韩视频| 欧美在线播放| avtt中文字幕| 午夜欧美在线一二页| 欧美新色视频| 国产成人久久精品| 国产日产一区| www.51色.com| 亚洲狼人国产精品| 精品久久久久成人码免费动漫| 久久精品一本久久99精品| 成人免费91| 精品国产乱码久久久久久图片| 亚洲精品国产片| 91精品91久久久久久| 日韩手机在线| 91色国产在线| 亚洲激情在线激情| 欧美特黄一级视频| 91国产精品91| 欧美国产不卡| 国产成人av影视| 最新成人av在线| 国产男女猛烈无遮挡| 亚洲午夜精品久久久久久性色| 黄色欧美视频| www成人免费| 91色.com| 亚洲一线在线观看| www.久久久久| 老牛精品亚洲成av人片| 无码人妻h动漫| 中文字幕一区在线| 天天插天天干天天操| 国产精品美女久久久久久免费| 欧美福利在线| 鲁丝一区二区三区| 日韩欧美国产综合|