Earlier quoted context omitted.
Though I agree with your sentiment, I must mention that there is nothing "weak" about Python's type system. You likely meant "dynamic", not "weak". See here: wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language
Python's type system is weak whether they self-identify that way or not. Types are implicitly converted in a variety of cases, notably True-ness. Meanwhile, runtime type identity is kind of meaningless; classes and individual objects can have their behavior meaningfully changed at runtime. The most you can say about any variable in Python is that it is a descendant of 'object' or else some primitive type.
>>> isinstance(type, object)
true
>>> T = type('T', (), {})
>>> isinstance(T, type)
True
>>> isinstance(T, object)
True
>>> isinstance(T(), object)
True
>>> isinstance(int, object)
True
>>> issubclass(int, object)
True
>>> isinstance(1, object)
True