Added strict types
parent
1ee9ec318b
commit
44f88345a2
20
datatypes.py
20
datatypes.py
|
@ -13,11 +13,29 @@ class Datatype(Enum):
|
||||||
COMPLEX = auto()
|
COMPLEX = auto()
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Data:
|
||||||
|
type: Datatype
|
||||||
|
value: Any
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Variable:
|
class Variable:
|
||||||
name: str
|
name: str
|
||||||
type: Datatype
|
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)
|
NONE_TYPE = Variable(None, Datatype.NONE, None)
|
||||||
|
|
Loading…
Reference in New Issue