Typing for metaclass examples
jsrozner opened this issue · 2 comments
jsrozner commented
Consider the example in 24-class-metaprog/factories.py (corresponds to example 24-2, page 912 in my copy)
Dog = record_factory('Dog', 'name weight owner')
rex = Dog('Rex', 30, 'Bob')
We do not get static type checking on, e.g., rex.name
Is there an easy fix, or is this because types in metaclasses / metaprogramming are hard?
ramalho commented
We do not get static type checking because all effects of metaprogramming happen at runtime, and a static type checker does not run your program. It can only analyze the static source code, and it is not smart enough to understand what record_factory does, or that the string `'name weight owner' is actually naming attributes of a class that will be built at runtime.