У вас почти это было :-) Есть только две небольшие поправки:
- Для метода new требуется return выражение
- Вызов super должен иметь два аргумента: cls и Status
Полученный код выглядит следующим образом:
import collections
class Status(collections.namedtuple("Status", "started checking start_after_check checked error paused queued loaded")):
__slots__ = ()
def __new__(cls, status):
return super(cls, Status).__new__(cls, status & 1, status & 2, status & 4, status & 8, status & 16, status & 32, status & 64, status & 128)
Он работает чисто, как вы и ожидали:
>>> print Status(47)
Status(started=1, checking=2, start_after_check=4, checked=8, error=0, paused=32, queued=0, loaded=0)