Python类报AttributeError:'K1'对象无'variant'属性问题求解
问题原因
你代码里的variant是__init__构造方法的入参局部变量,不属于实例属性,你没有提前给实例绑定variant属性的前提下,直接调用self.variant必然会触发属性不存在的错误。
修复方案
有两种可选修改方式:
- 直接用入参赋值,不需要通过self访问:
把构造方法里的self.R_LENGTH = self.variant修改为self.R_LENGTH = variant即可,修改后的对应代码段如下:
def __init__(self,variant): self.__state_bytes_length = self.S_LENGTH self.__delimited_suffix = self.SUFFIX # 直接用入参variant赋值,不需要加self前缀 self.R_LENGTH = variant CAP_LENGTH = self.S_LENGTH - self.R_LENGTH self.H_LENGTH = CAP_LENGTH/2 self.__rate_bytes_length = self.R_LENGTH self.__hash_bytes_length = self.H_LENGTH self.__state_in_bytes = bytearray([0 for i in range(self.__state_bytes_length)]) self.__capacity_bytes_length = self.__state_bytes_length - self.__rate_bytes_length self.__hash_bytes = bytearray()
- 如果你后续需要在其他实例方法中用到传入的variant值,可以先把入参绑定为实例属性,再赋值R_LENGTH:
def __init__(self,variant): # 先把入参绑定到实例属性 self.variant = variant self.__state_bytes_length = self.S_LENGTH self.__delimited_suffix = self.SUFFIX self.R_LENGTH = self.variant # 剩余代码保持不变即可
内容的提问来源于stack exchange,提问作者Ankush Soni
相关产品推荐
相关产品推荐

