| ▲ | sdeframond 2 hours ago | |||||||
Funny, I ran into the same pattern just a few months ago! In practice, I found it difficult for coworkers to read and understand so I dropped the idea. Another limitation I found is that it breaks down when you start using inheritance. For example: ``` class _A: pass A = NewType("A", _A) class _B(_A): pass B = NewType("B", _B) def foo(a: A) -> None: pass b = B(_B()) foo(b) # Mypy is not happy: Argument 1 to "foo" has incompatible type "B"; expected "A" foo(A(b)) # Mypy is OK ``` | ||||||||
| ▲ | simonw 29 minutes ago | parent [-] | |||||||
(On Hacker News you can do code blocks by indenting each line with two spaces.) | ||||||||
| ||||||||