第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

預(yù)期類(lèi)型“List[A]”(匹配泛型類(lèi)型“List[_T]”),在正確類(lèi)型的列表上得到

預(yù)期類(lèi)型“List[A]”(匹配泛型類(lèi)型“List[_T]”),在正確類(lèi)型的列表上得到

蕪湖不蕪 2023-12-20 19:56:08
from typing import Listclass Base(object):    passclass A(Base):    passclass B(Base):    passa: List[A] = []b: List[B] = []c: List[Base] = a + b我正在Expected type 'List[A]' (matched generic type 'List[_T]'), got 'List[B]' instead繼續(xù)b。我如何獲得正確的警告,因?yàn)轱@然類(lèi)型很好。
查看完整描述

1 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

這些類(lèi)型都不好。List不變的,意味著 aList[X]不能替代except和完全相等。同樣,并不意味著且同樣適用于。List[Y]XYA <: BaseList[A] <: List[Base]B

PEP 484:協(xié)變和逆變

[...]
默認(rèn)情況下,泛型類(lèi)型在所有類(lèi)型變量中被認(rèn)為是不變的,這意味著用類(lèi)型注釋的變量值List[Employee]必須與類(lèi)型注釋完全匹配——不允許類(lèi)型參數(shù)的子類(lèi)或超類(lèi)(在本例中Employee) 。

雖然可以重新解釋此操作的類(lèi)型,但這并不明確。保守的類(lèi)型檢查器將拒絕該操作而不是猜測(cè)。


諸如此類(lèi)的可變?nèi)萜?code>List是不變的,因?yàn)樵丶瓤梢?em>插入(逆變)列表,也可以從(協(xié)變)列表中取出。如果不需要可變性,則使用不可變序列提供有效的類(lèi)型注釋:

from?typing?import?Sequencea:?Sequence[A]?=?[]
b:?Sequence[B]?=?[]
c:?Sequence[Base]?=?[*a,?*b]

如果需要可變性,可以顯式枚舉List.?即使每個(gè)單獨(dú)的列表實(shí)際上只包含一種類(lèi)型,這也會(huì)預(yù)先擴(kuò)大列表中預(yù)期的元素。

a:?List[Union[A,?B]]?=?[]
b:?List[Union[A,?B]]?=?[]
c:?List[Union[A,?B]]?=?a?+?b

先發(fā)制人地?cái)U(kuò)大操作數(shù)的類(lèi)型可能是不可取的或不可能的。或者,也可以cast在使用現(xiàn)場(chǎng)進(jìn)行安裝。

a:?List[A]?=?[]
b:?List[B]?=?[]
c:?List[Union[A,?B]]?=?cast(List[Union[A,?B]],?a)?+?cast(List[Union[A,?B]],?a)

請(qǐng)注意,這cast實(shí)際上禁用了對(duì)強(qiáng)制轉(zhuǎn)換值的類(lèi)型檢查。僅在已知正確的情況下使用它。


查看完整回答
反對(duì) 回復(fù) 2023-12-20
  • 1 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)