Как указать аргумент __init__, который не является атрибутом класса

С помощью attrs я могу указать аргумент init, который не является атрибутом класса.

например, объекту CRC8 может быть передано несколько байтов или байтов в массиве конструктора, но я не хочу сохранять эти входные данные, просто вычислю CRC и сохраню результат.

Является ли этот шаблон примером, в котором целесообразно использовать метод класса (как описано в этой ссылке)?

http://www.attrs.org/en/stable/init.html

1 ответ

То, что вы хотите здесь, это фабрика методов класса:

@attr.s
class CRC8:
    checksum = attr.ib()

    @classmethod
    def from_bytes(cls, bytes):
        # compute your CRC
        # checksum = ...
        return cls(checksum)

Это позволяет вам делать правильные проверки и противовесы.

В этом случае я бы хотел знать, не подойдет ли функция? Аналогично стандартной библиотеке binascii.crc32(),

Другие вопросы по тегам