Как указать аргумент __init__, который не является атрибутом класса
С помощью attrs я могу указать аргумент init, который не является атрибутом класса.
например, объекту CRC8 может быть передано несколько байтов или байтов в массиве конструктора, но я не хочу сохранять эти входные данные, просто вычислю CRC и сохраню результат.
Является ли этот шаблон примером, в котором целесообразно использовать метод класса (как описано в этой ссылке)?
1 ответ
То, что вы хотите здесь, это фабрика методов класса:
@attr.s
class CRC8:
checksum = attr.ib()
@classmethod
def from_bytes(cls, bytes):
# compute your CRC
# checksum = ...
return cls(checksum)
Это позволяет вам делать правильные проверки и противовесы.
В этом случае я бы хотел знать, не подойдет ли функция? Аналогично стандартной библиотеке binascii.crc32()
,