List[str]
ve Sequence[str]
arasındaki bir IS-A ilişkisinin ek açıklamada kullanılması ne işe yarar?
Bu, götürülmesi gereken en önemli noktadır. Bir türün başka türde bir alt tip olup olmadığını kontrol etmek genellikle kodunuzu açıklama yazarken yapmanız gereken bir şey değildir. Bu genellikle fark edildi ve the nuking of __subclasscheck__
üzerinde bir tartışma neden nedeni.
states in a comment Mark Shannon gibi:
Bir tür türde bir alt tipi olup olmadığını kontrol etmek anlamlıdır, ama bu statik denetleyicisi işi olduğunu ve yazarak modülünde ait değil. konteyner tipi benzer ancak bunların alt metne türleri de farklı yerlerde
iki şekilde de, çekler all made in GenericMeta
s __subclasscheck__
olan jenerik tipler olarak is
için metaclass, şu anki uygulama durumlarda daha çok odaklandığı durumda, alt kodlanmış türler
covariant or contravariant ise bağlı olarak yapılır.
issubclass(List[bool], List[int]) # checks if bool == int
döner yanlış: Örneğin, List
türleri ile subtype
ilişki için kontrol gibi değildirler. (İlk durumda olduğu gibi), diğer yandan
issubclass(Sequence[bool], Sequence[int]) # checks if bool is a subclass of int
, türleri için belirli bir türü olmayan: sekansları için, çeşitleri, örneğin, aşağıdaki verimlerde True
olarak, bildirdiğinden vardır
issubclass(List, Sequence)
__subclasscheck__
GenericMeta
'da delegate - __subclasscheck__
in ABCMeta
- True
olarak değerlendirilecektir. iki tip olduğu gibi, farklı ise
Son olarak,:
issubclass(List[str], Sequence[str])
ve issubclass
call is an instance of GenericMeta
baz sınıfı False
geri döndürülür; Bu koşul, typing
'daki türlerin çoğundan memnun. Durum ne olursa olsun, bu durumun gelecekteki bir sürümde mevcut olmayabileceği veya davranışının tamamen farklı olabileceğinden bahsedilmeye değer; modül hala geçici.
Neden olmasın? 'List [str]' ve '' Sıra [str] 'örnekleri gibidir; jenerik türün belirli formları. 'list()', 'abc.Sequence()' ın bir alt sınıfı değildir. –
Ya da farklı bir şekilde koydu: * Ne tür bir kullanım * Ne zaman açıklama [str] 've' Sıra [str] 'arasında bir IS-A ilişkisi var mı? –