Page 1 of 1

Python-Typanmerkung für Zeichenfolgenfolgen, aber nicht für Zeichenfolgen?

Posted: 12 Jan 2025, 10:40
by Guest
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:

Code: Select all

PathType = Union[str, os.PathLike]
def escape_cmdline(argv: Union[List[PathType], Tuple[PathType]]) -> str: ...
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?