Как указать аргумент __init__, который не является атрибутом класса - PullRequest
0 голосов
/ 03 июня 2018

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

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

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

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

1 Ответ

0 голосов
/ 04 июня 2018

Что вам нужно, так это фабрика методов класса:

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

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

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

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

...