If you teach Python's typing system correctly, you should have no problem later. The rule in Python is that names don't have a type associated with them, but all values do. It isn't that "things" change type. They don't. Objects and other values have a well determined type when they are created and that type never changes. Names never have a type to be changed. But any name can be associated with any value.
When you move to a language that requires explicitly applying a type to names (Java, say), then you just need to teach them that names are given types also, as a sort of redundancy so that errors can be caught earlier (compiler v run-time). A name associated with a type can only refer to a value that has that type.
Applying types to names (as well as values) isn't really that big a deal, and the students will be more sophisticated when you get to it.
However, they may not like having to explicitly apply types to names. But that is a different issue. The reason given above will be enough for many of them.
Finding errors early is a big win in programming. If you take that attitude when teaching Python you will stress things like early testing (preferably test-first programming) so that errors show up soonest.
For the distinction between a "thing" and a "name applied to a thing" it is often instructive and always fun to return to Haddock's Eyes. Lewis Carroll was more interested in mathematics, of course, but the ideas apply equally well to CS.
Don't confuse "typing" as hitting keys on a keyboard with "typing" as applying a type to a name or value. It may be that the first version of this was confusing in that regard. Here "typing" means only the latter.