From 44f88345a2d3ac237ec19caef5324a56438ab4cc Mon Sep 17 00:00:00 2001 From: Ruben Dahl Date: Sun, 9 Apr 2023 17:04:56 +0200 Subject: [PATCH] Added strict types --- datatypes.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/datatypes.py b/datatypes.py index a2f17fd..a44d443 100644 --- a/datatypes.py +++ b/datatypes.py @@ -13,11 +13,29 @@ class Datatype(Enum): COMPLEX = auto() +@dataclass +class Data: + type: Datatype + value: Any + + @dataclass class Variable: name: str type: Datatype - value: Any + value: Data + + def __setattr__(self, name, value): + if name == "value" and isinstance(value, Data): + if self.type == value.type: + object.__setattr__(self, name, value) + else: + raise ValueError( + "Type inequality; cannot assign value of " + f"type {value.type} to variable of type {self.type}" + ) + else: + object.__setattr__(self, name, value) NONE_TYPE = Variable(None, Datatype.NONE, None)