9 Stimmen

Wie kann ich Felder in einer ursprünglichen Reihenfolge erhalten?

Ich habe einen Code wie:

class Ordered(object):
    x = 0
    z = 0
    b = 0
    a = 0

print(dir(Ordered))

druckt es:

[ ......., a, b, x, z]

Wie kann ich Felder in der ursprünglichen Reihenfolge erhalten: x, z, b, a? Ich habe ein ähnliches Verhalten in Django Models gesehen.

1 Stimmen

Methoden, Eigenschaften usw. werden als Wörterbücher in Objekten gespeichert, und Wörterbücher sind per Definition ungeordnet. Was wollen Sie erreichen (oder besser, warum)?

0 Stimmen

Sie benötigen Python 3, um dies ohne Hacks zu tun: stackoverflow.com/a/4460565/821378

1voto

Artem Selivanov Punkte 1607

Verwenden Sie vorerst nur Python 3.6!

class OrderedClass():
    x = 0
    z = 0
    a = 0
    b = 0

print(list(OrderedClass.__dict__))

Das bringt mich hervor:

['__module__', 'x', 'z', 'a', 'b', '__dict__', '__weakref__', '__doc__']

1 Stimmen

Das liegt daran, dass PEP 520

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X