Hello folks, I am Chihiro, a.k.a. Frodo821, and this is my first post to this group.
I searched for a way to annotate both class variables and instance variables with different types and concluded that there is currently no way to do this. For example, what I want to: ``` class Foo: variable_both_class_and_instance = Field(desc="descriptive string") def __init__(self, value: int): self.variable_both_class_and_instance = value assert isinstance(Foo.variable_both_class_and_instance, Field) assert isinstance(Foo().variable_both_class_and_instance, int) ``` In this example, I want to annotate `Foo.variable_both_class_and_instance` with `Field` when it is accessed as a class variable. On the other hand, I want to annotate `Foo.variable_both_class_and_instance` with `int` when it is accessed as an instance variable. I don't have any smart ideas to accomplish this, but I think `typing.ClassVar` could be extended this like: ``` class Foo: variable_both_class_and_instance: Union[ClassVar[Field], int] = Field(desc="descriptive string") def __init__(self, value: int): self.variable_both_class_and_instance = value assert isinstance(Foo.variable_both_class_and_instance, Field) assert isinstance(Foo().variable_both_class_and_instance, int) ``` Do you have any ideas or comments about this? _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/7XFIE6YGRGO3XKCR7MZGDN6CCGUNN6MR/ Code of Conduct: http://python.org/psf/codeofconduct/