kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

PEP 483を読む(続き5)

共変性(Covariance)と反変性(Contravariance)

t2がt1の部分型であるとき、総称型コンストラクタGenTypeはこう呼ばれます。
- 共変 ― すべてのt1、t2においてGenType[t2]がGenType[t1]の部分型であるとき
- 反変 ― すべてのt1、t2においてGenType[t1]がGenType[t2]の部分型であるとき
- 不変(Invariant) ― 上記のどちらでもないとき

続きを読む

PEP 483を読む(続き4)

総称型の定義と利用

特別なビルディングブロックであるGenericを使ってクラスを総称型として宣言できます。class MyGeneric(Generic[X, Y, ...]): ...で型変数X等に関する総称型MyGenericを定義します。

このGeneric[X, Y, ...]っていうのは継承とは関係なくて、型チェッカーが使うだけ、ってことでいいよね

続きを読む

PEP 483を読む(続き3)

型変数

X = TypeVar('X')で一意の型変数を宣言できます。名前は変数名と一致しなくてはなりません。デフォルトでは、型変数は可能なあらゆる型をとることができます。

uniqueを一意と訳したけれども何がuniqueなんだろう
同じ名前で2回は宣言できない、くらいの話かな

続きを読む

PEP 483を読む(続き2)

 

総称型(Generic types)

上で定義された基本的なビルディングブロックにより、ジェネリックな形で新しい型を構築することが可能となります。たとえば、Tupleはfloatを取って具体型Vector=Tuple[float, ...]になり、また、UserIDを取って別の具体型Registry=Tuple[UserID, ...]になります。そのような意味論は総称型コンストラクタとして知られています。関数の意味論に似ていますが、関数が値をとって値を返すのに対し、総称型コンストラクタはタイプを取ってタイプを「返し」ます。

続きを読む

PEP 483を読む(続き)

以下、英語のTypeを型と訳すか、タイプとカタカナにするか、
それともTypeのままにしておくか悩ましい感じがしています
型って書くほうが普通かもしれませんがタイプとしてみました

続きを読む