Es gibt eine Idiom in Python, um so etwas wie zu tun, < /p>
Code: Select all
UNDEFINED = object()
def do_something(value=UNDEFINED):
if value is UNDEFINED:
do1()
else if value is None:
do2()
else:
do3()
Der Punkt ist, dass keiner ein gültiger Wert sein kann und nicht definierter ein paar andere Standardverhalten verursacht.
Die MyPy -Signatur wäre dann: < /p>
Code: Select all
def do_something(value=int|None|object):
...
< /code>
, was irgendwie sinnlos erscheint, da alles ein Objekt ist. < /p>
Literal[UNDEFINED]
ist auch nicht gültig.
Code: Select all
class _Undefined:
pass
UNDEFINED = _Undefined()
< /code>
und < /p>
def do_something(value=int|None|_Undefined):
...
Es ist in der Nähe, führt jedoch Eckfälle ein, von denen jemand _undefined () (eine neue Instanz erstellen) und bedeutet, dass ich mit ISInstance besser mithilfe von als mit der Verwendung von ISInstance> stattfinden würde, anstatt mit Wert ist undefiniert Wie die alte Idiom ermutigt.>