Verkettungslisten mit unterschiedlichen TypenPython

Python-Programme
Anonymous
 Verkettungslisten mit unterschiedlichen Typen

Post by Anonymous »

Ich habe eine übergeordnete Klasse A . Es hat nur wenige Kinder: Klasse A1 , a2 usw.
Ich möchte eine Liste erstellen, die eines der Kinder oder eine Liste mit einem der Kinder enthalten und als Klasse B . Code: < /p>

Code: Select all

#!/usr/bin/python3

from typing import Union, List, NewType, Type, Sequence
from dataclasses import dataclass

class A:
pass

class A1(A):
pass

class A2(A):
pass

B = NewType("B", Sequence[Union[Sequence[Type[A]], Type[A]]])

b1 = B([A1] + [A2]*2 + [[A1, A2]])
b2 = B([A1, A2, [A1, A2]])
< /code>
Wenn ich die Liste manuell erstelle, funktioniert sie einwandfrei. Wenn ich es jedoch erstelle, indem ich verschiedene Listen verkettete, berichtet MyPy -Linterfehler: < /p>
main.py:17: error: List item 0 has incompatible type "Type[A2]"; expected "Type[A1]"

main.py:17: error: List item 0 has incompatible type "List[Type[A]]"; expected "Type[A1]"
Gibt es eine Möglichkeit, den Fehler zu vermeiden, ohne den MyPy -Verlänger zu unterdrücken?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post