<i>Previously, if you had to define a class method that returned an object of the class itself, adding types for it was a bit weird, it would look something like this</i>...<p><i>To be able to say that a method returns the same type as the class itself, you had to define a TypeVar, and say that the method returns the same type T as the current class itself.</i><p>This kind of stuff is so crazy to me. I see how types are useful for defining general categories of data (int, string, float), but isn't it better to have as few types as possible? It just makes reading and using code more confusing to keep multiplying "types" like this.