Python-Typanmerkung für Zeichenfolgenfolgen, aber nicht für Zeichenfolgen?
Posted: 12 Jan 2025, 10:40
Gibt es einen Python-Typhinweis, der mit Listen, Tupeln und möglicherweise anderen sequentiellen Typen übereinstimmt, aber nicht mit Zeichenfolgen?
Das Problem besteht darin, dass Zeichenfolgen identisch sind Zeitsequenzen von Zeichenfolgen der Länge 1 (z. B. einzelne Zeichen), sodass sie technisch gesehen mit Sequence[str] übereinstimmen, aber die Bereitstellung einer Zeichenfolge für eine Funktion, die eine Liste von Zeichenfolgen erwartet, ist in vielleicht 100 % der Fälle ein Fehler.
Gibt es eine Möglichkeit, Zeichenfolgen aus der Typanmerkung auszuschließen, um sie so zu gestalten, dass sie dem nicht vorhandenen And[Sequence[str], Not[str]] ähneln?
Zu diesem Zweck möchte ich diese Funktion mit Anmerkungen versehen:
Aber die vorhandene Signatur sieht für mich aufgebläht aus und deckt keine benutzerdefinierten Typen ab, die mit Listen und Tupeln kompatibel sind. Gibt es einen besseren Weg?
Das Problem besteht darin, dass Zeichenfolgen identisch sind Zeitsequenzen von Zeichenfolgen der Länge 1 (z. B. einzelne Zeichen), sodass sie technisch gesehen mit Sequence[str] übereinstimmen, aber die Bereitstellung einer Zeichenfolge für eine Funktion, die eine Liste von Zeichenfolgen erwartet, ist in vielleicht 100 % der Fälle ein Fehler.
Gibt es eine Möglichkeit, Zeichenfolgen aus der Typanmerkung auszuschließen, um sie so zu gestalten, dass sie dem nicht vorhandenen And[Sequence[str], Not[str]] ähneln?
Zu diesem Zweck möchte ich diese Funktion mit Anmerkungen versehen:
Code: Select all
PathType = Union[str, os.PathLike]
def escape_cmdline(argv: Union[List[PathType], Tuple[PathType]]) -> str: ...