Gibt es in Python eine Möglichkeit, Instanzvariablen als optionale Argumente in einer Klassenmethode zu verwenden? zB:
%Vor%Jede Hilfe wäre willkommen.
Alle Antworten, die None
vorschlagen, sind korrekt. Wenn Sie sicherstellen möchten, dass ein Aufrufer None als reguläres Argument übergeben kann, verwenden Sie ein spezielles sentinel
und testen Sie mit is
:
Jeder Aufruf von object()
erzeugt ein eindeutiges Objekt, so dass is
zwischen diesem und einem anderen Wert niemals erfolgreich ist. Die zwei Unterstriche in __default
bedeuten "stark privat", was bedeutet, dass Anrufer wissen, dass sie nicht versuchen sollten, sich damit herumzuärgern (und dafür einiges an Arbeit benötigen würden, indem sie explizit den Namensmangel des Compilers nachahmen) / p>
Der Grund, warum Sie den von Ihnen geposteten Code nicht einfach verwenden können, ist, dass Standardwerte ausgewertet werden, wenn die def
-Anweisung auswertet, nicht später zum Zeitpunkt des Anrufs; und zu dem Zeitpunkt, an dem def
auswertet, gibt es noch kein self
, von dem die Instanzvariable genommen werden soll.
Dies funktioniert mit Python 2.5 und leitet und behandelt die Fälle, in denen blah leere Strings, Listen usw. ist.