成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Python學(xué)習(xí)之MRO方法搜索順序

Python學(xué)習(xí)之MRO方法搜索順序

熱門(mén)標(biāo)簽:哈爾濱外呼系統(tǒng)代理商 佛山防封外呼系統(tǒng)收費(fèi) 南昌辦理400電話怎么安裝 電話機(jī)器人適用業(yè)務(wù) 湛江電銷防封卡 徐州天音防封電銷卡 不錯(cuò)的400電話辦理 獲客智能電銷機(jī)器人 鄭州智能外呼系統(tǒng)運(yùn)營(yíng)商

為什么會(huì)講 MRO?

  • 在講多繼承的時(shí)候,有講到, 當(dāng)繼承的多個(gè)父類擁有同名屬性、方法,子類對(duì)象調(diào)用該屬性、方法時(shí)會(huì)調(diào)用哪個(gè)父類的屬性、方法呢?
  • 這就取決于 Python 的 MRO 了

什么是 MRO

  • MRO,method resolution order,方法搜索順序
  • 對(duì)于單繼承來(lái)說(shuō),MRO 很簡(jiǎn)單,從當(dāng)前類開(kāi)始,逐個(gè)搜索它的父類有沒(méi)有對(duì)應(yīng)的屬性、方法
  • 所以 MRO 更多用在多繼承時(shí)判斷方法、屬性的調(diào)用路徑
  • Python 中針對(duì)類提供了一個(gè)內(nèi)置屬性__mro__可以查看方法搜索順序

實(shí)際代碼

class A:
    def test(self):
        print("AAA-test")


class B:
    def test(self):
        print("BBB-test")


# 繼承了三個(gè)類,B、A、還有默認(rèn)繼承的 object
class C(B, A):
    ...


# 通過(guò)類對(duì)象調(diào)用,不是實(shí)例對(duì)象!
print(C.__mro__)


# 輸出結(jié)果
(class '__main__.C'>, class '__main__.B'>, class '__main__.A'>, class 'object'>)

  • 1.在搜索方法時(shí),是按照__mro__的輸出結(jié)果從左往右的順序查找的
  • 2.如果在當(dāng)前類(Class C)中找到方法,就直接執(zhí)行,不再搜索
  • 3.如果沒(méi)有找到,就查找下一個(gè)類中(Class B)是否有對(duì)應(yīng)的方法,如果找到,就直接執(zhí)行,不再搜素
  • 4.如果找到最后一個(gè)類(Class object)都沒(méi)有找到方法,程序報(bào)錯(cuò)

類圖

注意

其實(shí) MRO 是涉及一個(gè)底層算法的,下面來(lái)詳細(xì)講解一下

MRO 算法

Python 發(fā)展到現(xiàn)在經(jīng)歷了三種算法

  • 舊式類 MRO 算法:從左往右,采用深度優(yōu)先搜索(DFS),從左往右的算法,稱為舊式類的 MRO
  • 新式類 MRO 算法:自 Python 2.2 版本開(kāi)始,新式類在采用深度優(yōu)先搜索算法的基礎(chǔ)上,對(duì)其做了優(yōu)化
  • C3 算法:自 Python 2.3 版本,對(duì)新式類采用了 C3 算法;由于 Python 3.x 僅支持新式類,所以該版本只使用 C3 算法

什么是舊式類,新式類

Python學(xué)習(xí)之新式類和舊式類講解

想深入了解 C3 算法的可以看看官網(wǎng)

https://www.python.org/download/releases/2.3/mro/

舊式類 MRO 算法

需要在 python2 環(huán)境下運(yùn)行這段代碼

實(shí)際代碼

# 舊式類算法
class A:
    def test(self):
        print("CommonA")


class B(A):
    pass


class C(A):
    def test(self):
        print("CommonC")


class D(B, C):
    pass


D().test()


# python2 下的運(yùn)行結(jié)果
CommonA

類圖

分析

  • 通過(guò)類圖可以看到,此程序中的 4 個(gè)類是一個(gè)“菱形”繼承的關(guān)系
  • 當(dāng)使用 D 類實(shí)例對(duì)象訪問(wèn) test() 方法時(shí),根據(jù)深度優(yōu)先算法,搜索順序?yàn)?code>D->B->A->C->A
  • 因此,舊式類 MRO 算法最先搜索得到 test() 方法是在 A 類里面,所以最終輸出結(jié)果為 CommonA

新式類 MRO 算法

  • 為解決舊式類 MRO 算法存在的問(wèn)題,Python 2.2 版本推出了新的計(jì)算新式類 MRO 的方法
  • 它仍然采用從左至右的深度優(yōu)先遍歷,但是如果遍歷中出現(xiàn)重復(fù)的類,只保留最后一個(gè)

以上面的代碼栗子來(lái)講

  • 深度優(yōu)先遍歷,搜索順序?yàn)?code>D->B->A->C->A
  • 因?yàn)轫樞蛑杏?2 個(gè) A,因此只保留最后一個(gè)
  • 最終搜索順序?yàn)?code>D->B->C->A

新式 MRO 算法的問(wèn)題

雖然解決了舊式 MRO 算法的問(wèn)題,但可能會(huì)違反單調(diào)性原則

什么是單調(diào)性原則?

在子類存在多繼承時(shí),子類不能改變父類的 MRO 搜索順序,否則會(huì)導(dǎo)致程序發(fā)生異常

實(shí)際代碼

class X(object):
    pass


class Y(object):
    pass


class A(X, Y):
    pass


class B(Y, X):
    pass


class C(A, B):
    pass

深度優(yōu)先遍歷后的搜索順序?yàn)椋?code>C->A->X->object->Y->object->B->Y->object->X->object

相同取后者的搜索順序?yàn)椋?code>C->A->B->Y->X->object

分析不同類的 MRO

  • A:A->X->Y->object
  • B:A->Y->X->object
  • C:C->A->B->X->Y->object

很明顯,B、C 中間的 X、Y 順序是相反的,就是說(shuō) B 被繼承時(shí),它的搜索順序會(huì)被改變,違反了單調(diào)性

在 python2 中運(yùn)行這段代碼的報(bào)錯(cuò)

在 python3 中運(yùn)行這段代碼的報(bào)錯(cuò)

C3 MRO 算法

  • 為解決前面兩個(gè)算法的問(wèn)題,Python 2.3 采用了 C3 方法來(lái)確定方法搜索順序
  • 多數(shù)情況下,如果別人提到 Python 中的 MRO,指的都是 C3 算法

將上面第一個(gè)栗子的代碼放到 python3 中運(yùn)行

class A:
    def test(self):
        print("CommonA")


class B(A):
    pass


class C(A):
    def test(self):
        print("CommonC")


class D(B, C):
    pass


D().test()


# 輸出結(jié)果
CommonC

簡(jiǎn)單了解下 C3 算法

以上面代碼為栗子,C3 會(huì)把各個(gè)類的 MRO 等價(jià)為以下等式

  • A:L[A] = merge(A , object)
  • B:L[B] = B + merge(L[A] , A)
  • C:L[C] = C + merge(L[A] , A)
  • D:L[D] = D + merge(L[B] , L[C] , B , C)

了解一下:頭、尾

以 A 類為栗,merge() 包含的 A 成為 L[A] 的頭,剩余元素(這里只有 object)稱為尾

merge 的運(yùn)算方式

  • 1.將merge 第一個(gè)列表的頭元素(如 L[A] 的頭),記作 H
  • 2.如果 H 出現(xiàn)在 merge 其他列表的頭部,則將其輸出,并將其從所有列表中刪除
  • 3.如果 H 只出現(xiàn)一次,那么也將其輸出,并將其從所有列表中刪除
  • 4.如果 H 出現(xiàn)在 merge 其他列表的非頭部,則取下一個(gè)列表的頭元素記作 H,然后回到步驟二
  • 5.最后回到步驟一,重復(fù)以上步驟

重復(fù)以上步驟直到列表為空,則算法結(jié)束;如果不能再找出可以輸出的元素,則拋出異常

簡(jiǎn)單類 MRO 的計(jì)算栗子

class B(object): pass

print(B.__mro__)


(class '__main__.B'>, class 'object'>)
  • MRO 計(jì)算方式
L[B] = L[B(object)]
     = B + merge(L[object])
     = B + L[object]
     = B object

單繼承MRO 的計(jì)算栗子

# 計(jì)算 MRO
class B(object): pass

class C(B): pass

print(C.__mro__)


(class '__main__.C'>, class '__main__.B'>, class 'object'>)
  • MRO 計(jì)算方式
L[C] = C + merge(L[B])
     = C + L[B]
     = C B object

多繼承MRO 的計(jì)算栗子

O = object

class F(O): pass

class E(O): pass

class D(O): pass

class C(D, F): pass

class B(D, E): pass

class A(B, C): pass


print(C.__mro__)
print(B.__mro__)
print(A.__mro__)


# 輸出結(jié)果
(class '__main__.C'>, class '__main__.D'>, class '__main__.F'>, class 'object'>)
(class '__main__.B'>, class '__main__.D'>, class '__main__.E'>, class 'object'>)
(class '__main__.A'>, class '__main__.B'>, class '__main__.C'>, class '__main__.D'>, class '__main__.E'>, class '__main__.F'>, class 'object'>)

  • O 類、object 類 MRO 計(jì)算
L[O] = O = object
  • D、E、F 類 MRO 計(jì)算
L[D] = D + merge(L[O])
        = D O
  • C 類 MRO 計(jì)算
L[C] = L[C(D, F)]
     = C + merge(L[D], L[F], DF)
     # 從前面可知 L[D] 和 L[F] 的結(jié)果
     = C +  merge(DO, FO, DF)
     # 因?yàn)?D 是順序第一個(gè)并且在幾個(gè)包含 D 的 list 中是 head,
     # 所以這一次取 D 同時(shí)從列表中刪除 D
     = C + D + merge(O, FO, F)
     # 因?yàn)?O 雖然是順序第一個(gè)但在其他 list (FO)中是在尾部, 跳過(guò)
     # 改為檢查第二個(gè)list FO
     # F 是第二個(gè) list 和其他 list 的 head
     # 取 F 同時(shí)從列表中刪除 F
     = C + D + F + merge(O)
     = C D F O
  • B 類 MRO 計(jì)算
L[B] = L[B(D, E)]
     = B + merge(L[D], L[E], DE)
     = B + merge(DO, EO, DE)
     = B + D + merge(O, EO, E)
     = B + D + E + merge(O)
     = B D E O
  • A 類 MRO 計(jì)算
L[A] = L[A(B,C)]
        = A + merge(L[B], L[C], BC)
        = A + merge( BDEO, CDFO, BC )
        = A + B + merge( DEO, CDFO, C )
        # D 在其他列表 CDFO 不是 head,所以跳過(guò)到下一個(gè)列表的 頭元素 C
        = A + B + C + merge( DEO, DFO )
        = A + B + C + D + merge( EO, FO )
        = A + B + C + D + E + merge( O, FO )
        = A + B + C + D + E + F + merge( O )
        = A B C D E F O

多繼承MRO 的計(jì)算栗子二

O = object

class F(O): pass

class E(O): pass

class D(O): pass

class C(D, F): pass

class B(E, D): pass

class A(B, C): pass


print(C.__mro__)
print(B.__mro__)
print(A.__mro__)


# 輸出結(jié)果
(class '__main__.C'>, class '__main__.D'>, class '__main__.F'>, class 'object'>)
(class '__main__.B'>, class '__main__.E'>, class '__main__.D'>, class 'object'>)
(class '__main__.A'>, class '__main__.B'>, class '__main__.E'>, class '__main__.C'>, class '__main__.D'>, class '__main__.F'>, class 'object'>)

  • O 類、object 類 MRO 計(jì)算
L[O] = O = object
  • D、E、F 類 MRO 計(jì)算
L[D] = D + merge(L[O])
        = D O
  • C 類 MRO 計(jì)算
L[C] = L[C(D, F)]
        = C + merge(L[D], L[F], DF)
        = C + merge(DO, FO, DF)
        = C + D + merge(O, FO, F)
        = C + D + F + merge(O)
        = C D F O
  • B 類 MRO 計(jì)算
L[B] = L[B(E, D)]
       = B + merge(L[E], L[D], ED)
       = B + merge(EO, DO, ED)
       = B + E + merge(O, DO, D)
       = B + E + D + merge(O)
       = B E D O
  • A 類 MRO 計(jì)算
L[A]  = L[A(B, C)]
        = A + merge(L[B], L[C], BC)
        = A + merge(BEDO, CDFO, BC)
        = A + B + merge(EDO, CDFO, C)
        = A + B + E + merge(DO,CDFO, C)
        = A + B + E + C + merge(O,DFO)
        = A + B + E + C + D + merge(O, FO)
        = A + B + E + C + D + F + merge(O)
        = A B E C D F O

到此這篇關(guān)于Python學(xué)習(xí)之MRO方法搜索順序的文章就介紹到這了,更多相關(guān)Python MRO方法搜索順序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 淺談Python的方法解析順序(MRO)
  • Python高級(jí)編程之繼承問(wèn)題詳解(super與mro)
  • Python多繼承以及MRO順序的使用

標(biāo)簽:懷化 吉安 蘭州 安康 紹興 蕪湖 廣西 呂梁

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python學(xué)習(xí)之MRO方法搜索順序》,本文關(guān)鍵詞  Python,學(xué),習(xí)之,MRO,方法,搜索,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python學(xué)習(xí)之MRO方法搜索順序》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Python學(xué)習(xí)之MRO方法搜索順序的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲最大视频网| 丁香婷婷久久久综合精品国产| 国产香蕉尹人视频在线| 岛国av免费在线| 两个人看的免费完整在线观看| 色吊丝av中文字幕| 精品久久久久久久久久ntr影视| 欧美先锋影音| 国产一区二区三区不卡视频网站| 黄网在线观看视频| 亚洲不卡av不卡一区二区| 国产亚洲综合久久| 成人免费视频国产免费观看| www.欧美激情.com| 91九色美女在线视频| 天天操中文字幕视频| 欧美午夜激情视频| 欧美色倩网站大全免费| 在线电影国产精品| 精品一区二区三区自拍图片区| 亚洲精品第一国产综合野| 成人爽a毛片一区二区免费| 久草成色在线| 国产精品中文欧美| 在线精品视频免费观看| 久久精品这里只有精品| 男女男精品视频网| 久久免费手机视频| 国产精品日日摸夜夜添夜夜av| 欧美国产不卡| 国产成人8x视频一区二区| 欧美成人精品一区二区免费看片| 波多野结衣在线影院| 男生裸体视频网站| 国产精品日韩欧美一区| 蜜桃免费网站一区二区三区| 天天干天天插天天操| 欧美日韩色婷婷| jizzjizzxxxx| 欧美手机在线| 最后生还者第二季在线观看| 欧美性极品videosbest| 91亚洲精品久久久| 欧美巨大另类极品videosbest| 久久99精品一区二区三区三区| 国产午夜精品久久久| 国产日韩精品在线看| 久久午夜无码鲁丝片午夜精品| 欧美一级欧美三级在线| 天天综合永久入口| 亚洲黄色三级视频| 秋霞影院一区二区三区| 国产视频一区二区三| 日韩黄色在线免费观看| 日韩综合一区二区三区| 久久青青色综合| 91在线免费看| 激情五月开心婷婷| 天堂在线www天堂中文在线| 国产精品福利av| 红杏成人性视频免费看| 午夜视频在线观看一区二区| www.亚洲一区| 久久亚洲欧洲| 日日欢夜夜爽一区| 一区二区三区丝袜| 久久久久久一区二区三区| 日本在线影院| 亚洲欧洲精品在线| 69堂成人精品视频免费| 亚洲少妇久久久| 妖精视频成人观看www| 日韩一级二级三级| 日韩av在线高清| 日本青青草视频| 免费在线视频一级不卡| 久久久三级国产网站| 亚洲一区二区自偷自拍| 亚洲国产精品日韩| 国产一区二区三区成人欧美日韩在线观看| 精品久久无码中文字幕| 亚洲女同同性videoxma| 久久一区二区三| 中文字幕在线中文字幕日亚韩一区| 一级特黄aaa大片在线观看| 成人黄色av免费在线观看| 午夜视频一区在线观看| 久久密一区二区三区| jk漫画禁漫成人入口| 青青草国产精品一区二区| 国产一级黄色av| 韩国精品一区二区| 麻豆一区二区三区精品视频| 日本视频在线观看一区二区三区| 国产精品一区二区a| 乱码一区二区三区| a毛片不卡免费看片| 麻豆精品一区二区| 中文字幕一区二区三区免费视频| 日韩另类视频| 欧美一级日韩免费不卡| 国产精品.com| 五月天婷婷亚洲| 国产精品乱码一区二区| 欧美华人在线视频| 九九九九九国产| 国产精品人人妻人人爽| 日韩免费看片| 日本美女久久| 日本免费网站视频| 日本一区二区网站| 免费不卡视频| free性欧美高清另类| 久久精品国产大片免费观看| 亚洲国产视频网站| 黄色片子免费看| 欧美激情精品久久久久久小说| 青青九九免费视频在线| 亚洲欧美视频一区二区三区| 成人欧美一区二区三区小说| 亚洲经典视频在线观看| 国产视频网址在线| 久久综合久久鬼| 久久国产精品露脸对白| 日本久久久久亚洲中字幕| 黄色一级a毛片| 日韩精品日韩在线观看| 麻豆91精品91久久久| 精品视频一区三区九区| 一区二区三区视频免费在线观看| 国产日产欧美a一级在线| 日本一区二区欧美| 国产一区二区三区亚洲综合| 91玉足脚交嫩脚丫在线播放| 免费观看国产视频| 免费羞羞视频网站| 国产毛片一区二区三区va在线| 成人综合婷婷国产精品久久| 污污视频在线免费观看| 日本色护士高潮视频在线观看| 中文在线免费观看| 激情视频网站在线播放色| 国产91精品精华液一区二区三区| aaaaaa亚洲| 国产又猛又黄又爽| 久久亚洲国产中v天仙www| 国产综合 伊人色| 自拍偷拍亚洲| 香蕉视频禁止18| 午夜在线视频免费观看| 成人欧美在线观看| 欧美午夜春性猛交xxxx| 日韩精品亚洲元码| 日韩成人综合网| 在线观看国产一区二区| 亚洲人成人一区二区在线观看| 欧美性猛xxx| av在线免费观看国产| 精品欧美国产一区二区三区不卡| 亚洲欧美va天堂人熟伦| 羞羞视频在线观看不卡| 色91精品久久久久久久久| 久久精品小视频| 日韩精品一区二区三区蜜臀| 久久精品凹凸全集| 俄罗斯黄色一级片| 污片视频在线免费观看| 国产精品污www一区二区三区| 国产精品麻豆一区二区三区| 色诱女教师一区二区三区| 亚洲级视频在线观看免费1级| 国产精品一区二区三区四区| 555www色欧美视频| 又黄又爽的视频在线观看| 老色鬼精品视频在线观看播放| 亚洲欧美国产精品桃花| 性感美女一区二区三区| 精品爆乳一区二区三区无码av| 视频一区二区三区入口| 奇米影视首页 狠狠色丁香婷婷久久综合| 国产精品一 二 三| 日本女人性生活视频| 欧美日韩激情视频在线观看| videos性欧美另类高清| 亚洲男人天堂色| 亚洲成人黄色网| av在线综合网| 欧美一区二区三区播放| 欧美人与z0zoxxxx特| 人人影院免费大片| 18成人免费观看视频漫画| 色av成人天堂桃色av| 希岛爱理av免费一区二区| 欧美成人精品h版在线观看| 国产精品一区二区久久精品| 亚洲精品中文在线观看| 国产精品香蕉一区二区三区| 亚洲女同一区| 奇米网人体黄视频| 在线看的av网站| 九色在线视频| 黄色三级高清在线播放| 欧美 日韩 国产 成人 在线观看| 亚洲欧洲免费| 精品国产不卡一区二区| 午夜精品福利一区二区蜜股av| 国产一区二区自拍| 国产精品福利小视频| 欧美性受xxxxxx黑人xyx性爽| 无码人妻精品一区二区三区温州| 久国产精品视频| 色婷婷av久久久久久久| 中文字幕欧美人妻精品一区| 久久婷婷国产综合精品青草| 91蜜桃视频在线观看| 亚洲日本成人女熟在线观看| 午夜伦全在线观看| 成人爽a毛片免费啪啪动漫| 91国产精品视频在线| 中文字幕123| 精品剧情在线观看| 国产欧美日韩一级| 真实乱视频国产免费观看| 久久免费视频在线| 欧美视频第一页| 久久影院午夜精品| 国内揄拍国内精品少妇国语| 成人黄色在线电影| 红桃视频一区二区三区免费| 天堂a√中文在线| 国产真人无遮挡作爱免费视频| 国产高清视频在线播放| 欧美日韩成人在线一区| 一区二区中文字幕| 免费网站看电影大片| 无码国产精品一区二区免费16| 国产成人精品免费一区二区| 一个色综合导航| 亚洲国产精品久久久久久久| 婷婷六月激情| 成人黄色片视频网站| 三级不卡在线观看| 18禁免费观看网站| 六月亚洲精品一区| 亚洲成人动漫在线播放| 人妻少妇精品视频一区二区三区| 成人黄色网免费| 日韩在线第三页| 国产成人亚洲精品狼色在线| 亚洲一级一区| 亚洲mv大片欧洲mv大片精品| 性爽视频在线| 亚洲老司机在线| 中文字幕在线看视频国产欧美在线看完整| 中文字幕人妻互换av久久| 久久精品免费电影| 国产在线乱码一区二区三区| 久久夜精品va视频免费观看| 日本乱人伦aⅴ精品| 在线观看国产三级| eeuss影院130020部| 精品人妻一区二区三区蜜桃视频| 国产精品热久久久久夜色精品三区| 中文字幕成人| 精品香蕉在线观看视频一| 欧美综合在线第二页| 欧美中文字幕第一页| 狠狠久久亚洲欧美| 一个人看的日本免费视频| 亚洲国产日韩a在线播放| 91视频福利| a在线视频v视频| 亚洲一区二区三区在线观看网站| 欧美性大战久久| 欧美一区二区三区啪啪| 亚洲精品视频在线观看免费| 一区二区精品免费| 国产精品久久成人免费观看| 日本福利片在线| 天堂视频免费看| 国产亚洲精品久久久久久久| 肉丝袜脚交视频一区二区| 欧美激情一区二区在线| 日韩三级影院| 欧美亚洲另类久久综合| 亚洲超丰满肉感bbw| 久久久久人妻一区精品色| 亚洲成人直播| 奇米影音第四色| 天堂在线视频免费| 激情视频免费| 国产精品久久久久久9999| 妞干网在线视频| 日产精品久久久久久久| 中文字幕一区二区三区四区五区| 波多野结衣久久精品| 美女久久一区| 国产精品视频xxx| 亚洲精品乱码久久| 91社区在线播放| 福利在线视频导航| 久久精品免费一区二区| 精品欧美国产一区二区三区不卡| 精品国产伦一区二区三区观看方式| 欧美精品一区二区三区在线| 成人在线黄色电影| 成人免费福利| 黄页网站大全一区二区| 国精品无码一区二区三区| av av片在线看| 国产色产综合色产在线视频| 国产福利不卡视频| 亚洲欧美在线人成swag| 黑人玩弄人妻一区二区三区| 国产精品蜜臀| 亚洲人成精品久久久久| 国产精品视频一区国模私拍| 国产精品999| 中文字幕a在线观看| 久久久久免费网站| 激情一区二区| 国产精品日韩一区二区三区| 免费av成人在线| 狠狠色伊人亚洲综合成人| 99视频精品全国免费| 欧美激情第一页在线观看| 一本色道综合久久欧美日韩精品| 中文在线字幕免费观|