Added strict types

master
Ruben Dahl 2023-04-09 17:04:56 +02:00
parent 1ee9ec318b
commit 44f88345a2
No known key found for this signature in database
GPG Key ID: D9B193810A18673E
1 changed files with 19 additions and 1 deletions

View File

@ -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)