support PyPy3: use explicit `self`