
Hi Sven, "I hope the second ': int' can be omitted because 0 already is an int." 0 is also an Any, an object, a SupportAbs, and a Union[int, str]. And infinitely more, of course. A typechecker needs to be explicitly told which was intended. Stephan Op 17 mei 2017 19:52 schreef "Sven R. Kunze" <srkunze@mail.de>: Hi Stephan, hi Ivan, On 17.05.2017 18:48, Ivan Levkivskyi wrote: from typing import NamedTuple class Foo(NamedTuple): """Foo is a very important class and you should totally use it. """ bar: int baz: int = 0 def grand_total(self): return self.bar + self.baz typing.NamedTuple supports docstrings, user-defined methods, and default values. I hope the second ': int' can be omitted because 0 already is an int. This makes me wonder three things: 1) Michel, can newcomers differentiate between when to use ' : ' and when to use ' = ' and a combination thereof? 2) There must be a lot of cornercases where people rewrite Foo to be a normal class in the end, right? 3) If one doesn't need tuple-__dunder__ methods, a "normal" class would even need 1 line less. (+ Stephan's second point) So, this still leaves those missing __dunder__ magic methods doing the right thing at the right time. Sven