FloatBaseT = TypeVar('FloatBaseT', bound='FloatBase')
class FloatBase(Generic[FloatBaseT], metaclass=ABCMeta):
...
@classmethod
def compose(cls: Type[FloatBaseT], sign_bin: 'bit', exponent_bin: 'bit', mantissa_bin: 'bit') -> FloatBaseT:
sign, biased_exponent, mantissa = tuple(map(lambda x: int(x), (sign_bin, exponent_bin, mantissa_bin)))
exponent = biased_exponent - cls._bias
return cls(sign, exponent, mantissa)
...
class Float32(FloatBase[FloatBaseT]):...
When I use this Float32.compose method, it says:
Float32.compose(ret_sign, ret_exp, ret_mant)
Could not bind method "compose" because "type[Float32[FloatBaseT@Float32]]"
is not assignable to parameter "cls"Type "type[Float32[FloatBaseT@Float32]]"
cannot be assigned to type
"type[FloatBaseT@Float32]"PylancereportGeneralTypeIssues
Is there any reason this error comes out in pylance? Is it correct to use generic class in this situation? In what circumstances do I need to use generic class?
Changing code with not to use generic class, but I've faced another issue in differnt method.