Ich möchte leichte Klassen definieren, die Datenstrukturen darstellen sollen. Wie bei vielen Datenstrukturen ist die Reihenfolge der Daten wichtig. Also, wenn ich voran gehen und definieren diese:Wie bekomme ich die Definitionsreihenfolge der Klassenattribute in Python?
class User(DataStructure):
username = StringValue()
password = StringValue()
age = IntegerValue()
ich was impliziert, dass dies eine Datenstruktur ist, wo eine Zeichenkette mit dem Benutzernamen zuerst durch eine Zeichenfolge mit dem Passwort, und schließlich das Alter des Benutzers gefolgt kommt, wie eine ganze Zahl. Wenn Sie mit Python vertraut sind, wissen Sie, dass die obige Klasse User
ein Objekt ist, das von type
erbt. Es wird, genau wie die meisten anderen Objekte in Python, eine haben. Und hier liegt mein Problem. Diese ist eine Hash-Map, so dass die Reihenfolge der Klassenattribute in der in keiner Weise mit ihrer Reihenfolge der Definition zusammenhängt.
Gibt es eine Möglichkeit, die tatsächliche Definition Reihenfolge herauszufinden? Ich frage hier, bevor ich mit einem der weniger gesunden Methoden gehe ich denken kann ...
Oh und nur klar zu sein, was ich will, ist eine Möglichkeit, dies aus der obigen Definition zu erhalten: ['username', 'password', 'age']
Als Referenz meine „weniger gesund“ Lösung bauen: Haben Sie einen Zähler, der jedes Mal, wenn ein '* Value' Klasse steigt instanziiert wird und stellen Sie den neuen Wert an die erste Instanz , ordnen Sie dann die Liste der Attribute nach diesem Wert an. Dies würde mit einer Meta-Klasse erfolgen. – Blixt
Das einzige, was mir in den Sinn kam, war die Verwendung einer Metaklasse, wie sie hier beschrieben wurde. –
Nun, der Counter ist die Art und Weise, wie das Django-Team das gemacht hat, also wäre ich mir ziemlich sicher, dass das der beste Weg ist. –