Je veux créer un namedtuple
qui représente les drapeaux individuels dans un champ de bits court. J'essaye de le sous-classer de sorte que je puisse décompresser le bitfield avant que le tuple soit créé. Cependant, ma tentative actuelle ne fonctionne pas:Modifier les arguments constructeur d'un namedtuple via un sous-classement?
class Status(collections.namedtuple("Status", "started checking start_after_check checked error paused queued loaded")):
__slots__ =()
def __new__(cls, status):
super(cls).__new__(cls, status & 1, status & 2, status & 4, status & 8, status & 16, status & 32, status & 64, status & 128)
Maintenant, mon expérience avec super()
est limitée et mon expérience avec __new__
est pratiquement inexistante, donc je ne suis pas tout à fait sûr que faire de la (à moi) erreur énigmatique TypeError: super.__new__(Status): Status is not a subtype of super
. Googling et creuser dans les docs n'ont rien donné d'éclairant.
Aide?
Devrait être ' super (Statut, cls) '! – knite