Wie funktioniert "Maybenon" (auch als "The Event Noy Trick") in Python -Typ Hinweisen?
Posted: 18 Feb 2025, 13:27
In Artenstubs für die Python -Standardbibliothek habe ich einen besonderen Typ namens Maybenone Pop -up festgestellt, normalerweise in Form von Normaltyp | Maybenone . Zum Beispiel finde ich in der SQLite3-Cursor-Klasse Folgendes: < /p>
Die Definition dieses Maybenone ist angegeben als:
(Ich konnte keine zusätzlichen Informationen in der beitragen.md finden, von der ich annehme Die Absicht, einen Rückgabetyp so zu markieren, dass ein Benutzer nicht gezwungen ist, in Fällen zu prüfen, in denen der Null für die meisten Benutzer eher ein theoretisches Problem ist. Aber wie erreicht das das Ziel? scheint zu implizieren, dass der Rückgabetyp irgendetwas sein könnte, wenn ich sagen möchte, dass er irgendwann oder in seltsamen Fällen keine sein kann, so scheint dies nicht das auszudrücken Intent. (zumindest mit meiner Konfiguration?) Also, was erreicht das spezielle Tippen überhaupt im Vergleich zu einfach nichts?
Code: Select all
class Cursor:
# May be None, but using `| MaybeNone` (`| Any`) instead to avoid slightly annoying false positives.
@property
def description(self) -> tuple[tuple[str, None, None, None, None, None, None], ...] | MaybeNone: ...
Code: Select all
# Marker for return types that include None, but where forcing the user to
# check for None can be detrimental. Sometimes called "the Any trick". See
# CONTRIBUTING.md for more information.
MaybeNone: TypeAlias = Any # stable
Code: Select all
SomeType | Any