Interpretieren Sie die Eingabe als Zeichenfolge und Namen des Klassenmitglieds

onekeystrokeatatime

In einigen __init__verschiedenen Klassen muss ich das Konstrukt mehrmals verwenden

try:
    self.member_name = kwargs['member_name']
except:
    self.member_name = default_value

oder wie von Moses Koledoye vorgeschlagen

self.member_name = kwargs.get('member_name', default_value)

Ich hätte gerne eine Methode, die beispielsweise den String eingibt 'member_name'und default_valuedie entsprechende Initialisierung erzeugt. Zum Beispiel, wenn man eingibt 'pi_approx'und 3.14der resultierende Code ist

self.pi_approx = kwargs.get('pi_approx', 3.14)

Auf diese Weise kann ich eine lange Folge dieser Initialisierungen durch eine Schleife entlang einer Liste aller erforderlichen Elemente und ihrer Standardwerte ersetzen.

Diese Technik, die eine switch-Anweisung emuliert, ist nicht dasselbe, hat aber einen ähnlichen Geschmack.

Ich bin mir nicht sicher, wie ich mich dem nähern soll, was ich tun möchte.


Angenommen, dies initializer(m_name, default_val)ist die Konstruktion, die durch ersetzt wird

self.m_name = kwargs.get('m_name', default_val)

Ich würde verwendet es dann durch eine Listen mit member_names = [m_name1, m_name2, m_name3]und default_values = [def_val1, def_val2, def_val3]und ruft

for m_name, d_val in zip(member_names, default_values):
    initializer(m_name, d_val)

Dies würde eine lange Liste von Versuchen ersetzen und den Code ein bisschen lesbarer machen.

Moses Koledoye

Wenn Sie try/exceptdamit umgehen sollten KeyError, können Sie die getMethode des kwargs-Diktats verwenden, mit der Sie einen Standardwert angeben können:

self.member_name = kwargs.get('member_name', default)

Welche kann auf Ihre Liste der Attributnamen erweitert werden mit setattr:

for m_name, d_val in zip(member_names, default_values):
    setattr(self, m_name, kwargs.get(m_name, d_val))

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Erhalten Sie den Namen des angemeldeten Benutzers in einem Formular einer Django-App und verwenden Sie die Ergebnisse als Eingabe eines Formularfelds

Wenn Sie keinen obligatorischen Parameter angeben, interpretieren Sie die Eingabeaufforderung nicht als Zeichenfolge

Eingabe als Zeichenfolge und Drucken

Verhindern Sie, dass Pandas 'NA' als NaN in einer Zeichenfolge interpretieren

Geben Sie die Zahl als Zeichenfolge und nicht als Ganzzahl an

Nehmen Sie den Namen der Variablen als Eingabe und geben Sie ihren Wert aus - Ruby

Nehmen Sie die Zeichenfolge als Eingabe vom Benutzer durch% c und% s und bestätigen Sie, dass beide Zeichenfolgen gleich sind

Übergeben Sie die Funktion als Eingabe- und Rückgabefunktion

Die Eingabe der Formulareingabe wird als Zahl und nicht als Zeichenfolge mit Javascript zurückgegeben

Wie übergibt man eine Zeichenfolge, die einen Datentyp speichert, der als Eingabe vom Benutzer verwendet wird, an den Operator sizeof() und erhält die Größe des Datentyps?

Entfernen Sie die Zeichenfolge von der linken und rechten Seite des Datums mit Python und aktualisieren Sie sie als neue Zeichenfolge

Sie müssen die E-Mail-ID des Benutzers als Eingabe erhalten und Protokolle in Jenkins senden

Filtern Sie untergeordnete Datenbankdatenbanken und geben Sie jeden Namen als Zeichenfolge zurück

Wie kann ich den Bot eine bestimmte Zeichenfolge interpretieren lassen, die als Argument in einem Befehl gesendet wird, und eine Ausgabe einer konvertierten Version dieser Zeichenfolge senden?

So verwenden Sie die Funktion, indem Sie ihren Namen als Zeichenfolge verwenden

Interpretieren Sie die Division durch Null als nan

So nehmen Sie eine Zeichenfolge als Eingabe und geben dann jedes Wort in einer neuen Zeile aus

Teilen Sie die Byte-Zeichenfolge und geben Sie sie als Byte-Zeichenfolge zurück

Pandas zwingen, (1,2) in der Spalte als Zeichenfolge und nicht als Bereich zu interpretieren?

Übergeben Sie die JSON-Zeichenfolge als Eingabe an den Befehl aws

Lesen Sie die Zellen des Excel-Dokuments als Zeichenfolge

Durch Hinzufügen eines Klassenmitglieds vom Typ Zeichenfolge wird die Basisklassenfunktion anstelle des untergeordneten Elements aufgerufen

Konvertieren Sie den Wert des HTML-Eingabe-Tags als Zeichenfolge in PHP

Konvertieren Sie die Liste in einen DataFrame mit einer bestimmten Spalte (hat keinen Namen) als Zeichenfolge

Konvertieren einer Zeichenfolge in den Namen eines Klassenmitglieds c #

Vertauschen Sie die Eingabe und drucken Sie die Ausgabe als Spalte

Erhalten Sie den Namen des dynamischen Schlüssels von json als Zeichenfolge?

So nehmen Sie die Eingabe als Tabelle und senden Sie sie in eine MySQL-Tabelle

Entfernen Sie das Perzentil (%) aus der importierten Zeichenfolge und definieren Sie die Zeichenfolge als Dezimalzahl

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv