Solución
solution.tsTypeScript
TYPE_MAP = {"int": int, "str": str, "float": float}
class Typed:
def __init__(self, expected_type):
self.expected_type = expected_type
def __set_name__(self, owner, name):
self.name = name
self.storage = f"_{name}"
def __get__(self, instance, owner):
if instance is None:
return self
return getattr(instance, self.storage, None)
def __set__(self, instance, value):
# Verifica que el tipo sea correcto; lanza TypeError si no lo es
if isinstance(value, self.expected_type):
if isinstance(value, int) or isinstance(value, str) or isinstance(value, float):
return True
else:
raise TypeError(f"{value} is not {self.expected_type}")
return False
class Container:
value = Typed(int)
def test_typed(value, expected_type_str):
expected_type = TYPE_MAP[expected_type_str]
c = Container()
c.__class__.value = Typed(expected_type)
try:
c.value = value
return True
except TypeError:
return False0respuestas