[pyar] NamedTuple de tipo generico?

marcos hipe marcoshipe en gmail.com
Jue Ene 4 13:10:40 ART 2018


Buenas!
Estuve indagando en el tema de type hints y me encontré con un problema,
quería hacer una NamedTuple que tenga un ítem de un tipo genérico, pero si
hago eso me tira el indescifrable error: "TypeError: metaclass conflict:
the metaclass of a derived class must be a (non-strict) subclass of the
metaclasses of all its bases"

Estoy haciendo algo mal?

El código que use es:

class State(abc.ABC):
    pass

State_T = TypeVar('State_T', bound=State)

class Node(Generic[State_T], NamedTuple):
    state: State_T
    path: List[str]
    cost: int

O sea que tengo un Node que tiene un ítem que es de tipo State o derivado.
Si, quizás un poco quisquilloso con querer eso, cuando si lo hago con una
clase común anda perfecto:

class State(abc.ABC):
    pass

State_T = TypeVar('State_T', bound=State)

class Node(Generic[State_T]):
    def __init__(self, state: State_T, path: List[str], cost: int):
        self.state: State_T = state
        self.path: List[str] = path
        self.cost: int = cost

Ya en mi código lo deje así con una clase común, pero me quede con la duda
de si estoy haciendo algo mal o si eso debería andar
Saludos!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180104/23b0d1f3/attachment.html>


Más información sobre la lista de distribución pyar