yurikhan: (Default)
Yuri Khan ([personal profile] yurikhan) wrote in [personal profile] vitus_wagner 2020-01-06 06:25 am (UTC)

Re: Down with static typing

В общем виде это называется «протокол»:

from typing_extensions import Protocol

class SupportsRead(Protocol):
    def read(self) -> str:
        ...


class MyReader:  # look ma, no inheritance
    def read(self) -> str:
        return 'hello world'


def test(reader: SupportsRead) -> None:
    pass

test(open('/dev/null'))
test(MyReader())
test(test)  # fails

В частном случае вообще может подойти typing.TextIO.

И да, я применяю mypy в боевом проекте. Польза от наличия аннотаций типов как документации для читателя/мейнтейнера кода настаёт при размере проекта больше 150 SLOC. А польза от mypy — примерно с той точки, когда проект естественным образом разделяется на несколько файлов.


Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting