Added strict types
parent
1ee9ec318b
commit
44f88345a2
20
datatypes.py
20
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)
|
||||
|
|
Loading…
Reference in New Issue