Welche Anzeichen deuten darauf hin, dass die Datenklassen von Python für einen bestimmten Anwendungsfall NICHT gut geeigPython

Python-Programme
Anonymous
 Welche Anzeichen deuten darauf hin, dass die Datenklassen von Python für einen bestimmten Anwendungsfall NICHT gut geeig

Post by Anonymous »

Ich finde Pythons Datenklassen unglaublich praktisch.
  • Sie sparen eine Menge Boilerplate-Code (es ist nicht mehr nötig, self.foo = foo für jeden __init__-Parameter zu schreiben, und es ist nicht mehr nötig, in den Rich-Comparison-Methoden ein Attribut nach dem anderen zu buchstabieren)
  • Sie machen die Codepflege überflüssig, wenn einer Klasse ein neues Attribut hinzugefügt wird (die automatische __eq__, __repr__ usw. integrieren alle automatisch das neue Feld)
  • Sie erleichtern die Inspektion von Klassen oder ihren Instanzen (

    Code: Select all

    dataclasses.fields
    , dataclasses.asdict usw.)
  • Es ist einfach, die Funktionalität auszuwählen; Wenn Sie etwas Spezifischeres als den Standard-__eq__ benötigen, schreiben Sie es einfach selbst und der @dataclasses.dataclass-Dekorator integriert es nahtlos
Sie sind tatsächlich so gut, dass ich sie überall für neuen Code verwende, mir einen Teil meines alten vorhandenen Codes ansehe und mich frage, ob es einen Grund gibt, warum ich das nicht tun sollte Refaktorieren Sie stattdessen alle „manuellen“ Klassen in Datenklassen.
Selbst wenn eine Klasse keine große „Datenklasse“ ist (vielleicht hat sie zum Beispiel nur einen oder zwei __init__-Parameter), bedeutet das Einrichten als Datenklasse immer noch, dass ich den __init__ nicht selbst eingeben muss, der Boilerplate __init__ verschwindet vollständig, anstatt ihn zu überladen Code, und ich bekomme alle anderen Dataclass-Vorteile kostenlos. Also... Warum nicht?
Was sind einige Warnsignale dafür, dass die Verwendung einer Datenklasse keine gute Idee ist? Gibt es allgemeine Anwendungsfälle, auf die man leicht hinweisen und sagen kann: „Wenn eine Klasse Die Dokumentation zur Datenklassenvererbung ist klar und unkompliziert, und der Parameter kw_only für dataclasses.field behandelt Probleme mit geerbten Datenklassenfeldern mit Standardwerten.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post