Closed
Description
Bug Report
I find this very similar to issue #5485.
I found myself using this flavor of idiom so as to not repeat myself when implementing comparison operations, etc.
To Reproduce
from operator import itemgetter
class A:
id_getter = itemgetter('this', 'that', 'other')
def __init__(self, d):
self.d = d
def __hash__(self) -> int:
return hash(self.id_getter(self.d))
a = A({'this': 1, 'that': 2, 'other': 'a', 'extra': 'b'})
hash(a)
Expected Behavior
No error
Actual Behavior
$ mypy example.py
example.py:8: error: Too many arguments
Found 1 error in 1 file (checked 1 source file)
I tried to annotate id_getter: ClassVar[Callable[[Dict], Tuple[int, int, str]]]
but just got back an additional error
examply.py:8: error: Invalid self argument "A" to attribute function "id_getter" with type "Callable[[Dict[Any, Any]], Tuple[Any, ...]]"
Your Environment
$ mypy --version
mypy 0.812
No flags or ini file.