使用attrs,如何指定不是类属性的 init 参数。
e.g。 CRC8对象可能会在构造函数中传递一些字节或bytearray,但我不想存储该输入,只需计算CRC并存储结果。
此模式是否适合使用类方法(如此链接中所述)?
答案 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()
类似。