Re: Feature Request: Adding Way to Annotate Class Variables Distinct from Instance Variables

"Chihiro Sakai" <[email protected]> Thu, 22 Dec 2022 02:03:12 -0000
Newsgroups gmane.comp.python.devel
Message-ID <[email protected]>
OK, I missed out on [email protected], and now I know this thread is off-topic on [email protected].

A bit more clear example of what I want to do is:

```
class Field:
  def __init__(self, desc: str) -> None:
    self.desc = desc


class FooMetaType:
  variable_both_class_and_instance: Field

  def __call__(self, value: int) -> 'Foo':
    ...


class Foo:
  variable_both_class_and_instance: int

  def __init__(self, value: int) -> None:
    self.variable_both_class_and_instance = value

Foo: FooMetaType
Foo.variable_both_class_and_instance = Field(desc="descriptive string")

instance = Foo(5)

print(instance.variable_both_class_and_instance)
```

Static typing on this example doesn't work correctly as expected because it does not allow overwriting another type over a class declaration.

My point on the example is the tangible value should be assigned to the instance variables. Still, on the other hand, I want to give a value denoting the variable's metadata to the class variable. From my understanding, these variables, like this `variable_both_class_and_instance` in the example, cannot be correctly typed.

Thank you for your kindness, I'll repost it to [email protected].