mirror of https://github.com/astral-sh/ruff
[ty] Add tests for dataclass fields annotated with `Final`
This commit is contained in:
parent
e16473d260
commit
b92a283f35
|
|
@ -444,6 +444,29 @@ To do
|
|||
|
||||
To do
|
||||
|
||||
## `Final` fields
|
||||
|
||||
Dataclass fields can be annotated with `Final`, which means that the field cannot be reassigned
|
||||
after the instance is created. Fields that are additionally annotated with `ClassVar` are not part
|
||||
of the `__init__` signature.
|
||||
|
||||
```py
|
||||
from dataclasses import dataclass
|
||||
from typing import Final, ClassVar
|
||||
|
||||
@dataclass
|
||||
class C:
|
||||
instance_variable: Final[int] = 1
|
||||
class_variable1: ClassVar[Final[int]] = 1
|
||||
class_variable2: ClassVar[Final[int]] = 1
|
||||
|
||||
reveal_type(C.__init__) # revealed: (self: C, instance_variable: int = Literal[1]) -> None
|
||||
|
||||
c = C()
|
||||
# TODO: this should be an error
|
||||
c.instance_variable = 2
|
||||
```
|
||||
|
||||
## Inheritance
|
||||
|
||||
### Normal class inheriting from a dataclass
|
||||
|
|
|
|||
Loading…
Reference in New Issue