ONE way might be to have the new method call the existing dunders. But that's not my preference-- I would like to find another way. I do have another idea, and I presented it in a previous response. Here it is again:
def __key_or_index_translator__(self, pos1, pos2, *, x) -> Tuple[Tuple[Any], Dict[str, Any]]:
"""I only allow subscripting like this:
>>> obj[1, x=2]
"""
return (pos1, pos2), dict(x=x)
The returned two-tuple, `t`, in turn gets unpacked like for each of the existing item dunders:
obj.__getitem__(*t[0], **t[1])
obj.__setitem__(value, *t[0], **t[1])
obj.__delitem__(*t[0], **t[1])