Утиный набор текста на обычной букве TPython

Программы на Python
Ответить
Anonymous
 Утиный набор текста на обычной букве T

Сообщение Anonymous »

Я хочу внедрить некоторое поведение в GenericClass на основе назначенного ему универсального класса. Ожидается, что тип T будет иметь метод класса validate, который выполняет некоторую проверку.
LiveDemo

Код: Выделить всё

from typing import Generic, TypeVar

T = TypeVar("T")

class GenericClass(Generic[T]):
def __init__(self):
pass

def perform_validation(self):
T.validate()

class StaticObj:
@classmethod
def validate(cls):
print("Validate called for {StaticObj.name}")

mygeneric = GenericClass[StaticObj]()
mygeneric.perform_validation()
Я думал, что теперь можно просто уклониться от ввода T.validate, но Python кричит на меня:

Код: Выделить всё

Program returned: 1
Traceback (most recent call last):
File "/app/output.s", line 21, in 
mygeneric.perform_validation()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/app/output.s", line 10, in perform_validation
T.validate()
^^^^^^^^^^
AttributeError: 'typing.TypeVar' object has no attribute 'validate'
По моему опыту работы с другими языками программирования, подобные вещи возможны. Что я делаю неправильно? Есть ли способ заставить его работать так, как я задумал?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -generic-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»