put this method in your class
def __setattr__(self, attr, value):
if attr not in dir(self):
if attr == "__ordered_fields__":
super.__setattr__(self, attr, value)
else:
if not hasattr(self, "__ordered_fields__"):
setattr(self, "__ordered_fields__", [])
self.__ordered_fields__.append(attr)
super.__setattr__(self, attr, value)
and to get the fields in order, just do something like:
print(self.__ordered_fields__)