Komut dosyası için bazı temel statik denetime sahip olmak için Python 3.5'i Mypy ile birlikte kullanıyorum. Geçenlerde, OrderedDict 'i döndürmek için bazı yöntemleri yeniden düzenledim, ancak belirtilen Anahtar ve Değer türleriyle iade eki kullanmaya çalıştığımda "' type 'nesnesi abonelik olamaz" hatasıyla karşılaştı.Mypy tipi ek açıklama için OrderedDict K, V türlerini nasıl belirlerim?
İndirgenmiş örnek:
#!/usr/bin/env python3.5
from collections import OrderedDict
# this works
def foo() -> OrderedDict:
result = OrderedDict() # type: OrderedDict[str, int]
result['foo'] = 123
return result
# this doesn't
def foo2() -> OrderedDict[str, int]:
result = OrderedDict() # type: OrderedDict[str, int]
result['foo'] = 123
return result
print(foo())
Ve bu çalıştırıldığı piton çıktısı:
Traceback (most recent call last):
File "./foo.py", line 12, in <module>
def foo2() -> OrderedDict[str, int]:
TypeError: 'type' object is not subscriptable
Mypy Ancak açıklamada tür ek açıklaması bir problemi yok ve ben çalışırsanız aslında uyaracaktır result[123] = 123
yapmak.
Buna neden oluyor?
(mypy versiyon 0.501). – max