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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Python-Typanmerkung für Zeichenfolgenfolgen, aber nicht für Zeichenfolgen?

by Guest » 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:

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?

Top