如何指定不是类属性的__init__参数

时间:2018-06-03 04:08:46

标签: python-attrs

使用attrs,如何指定不是类属性的 init 参数。

e.g。 CRC8对象可能会在构造函数中传递一些字节或bytearray,但我不想存储该输入,只需计算CRC并存储结果。

此模式是否适合使用类方法(如此链接中所述)?

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

1 个答案:

答案 0 :(得分:3)

你想要的是一个classmethod工厂:

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

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

这使您可以进行适当的检查和平衡。

在这种情况下,我想知道一个函数不会这样做吗?与标准库binascii.crc32()类似。