Код: Выделить всё
T = TypeVar('T')
def create_property(event_bus: EventBus):
class Property(Generic[T]):
def __init__(self, validator: Callable[[T], bool]):
self._validator = validator
def __set_name__(self, obj: Any, name: str):
self.name = name
def __get__(self, obj: Any, type: Any) -> T:
return obj.__dict__.get(self.name)
def __set__(self, obj: Any, value: T):
if not self._validator(value):
raise ValueError("Invalid value")
obj.__dict__[self.name] = value
event_bus.publish()
return Property
Моя проблема с приведенным выше кодом заключается в том, что он будет разрешаться в Property[Any] вместо Property[T], поэтому общий код где-то теряется. . Как я могу исправить эту функцию, чтобы сохранить общий вид?
Подробнее здесь: https://stackoverflow.com/questions/790 ... on-in-pyth