What if there was a general mechanism to allow operators to be implemented by
user code that does not belong to the class?
If the name [e.g.] __operatorhook_or__ is defined anywhere in a module, within
that module all calls to that operator are replaced with a two-step process:
call __operatorhook_or__(dict1, dict2)
if it returns a value, use that value
if it returns NotImplemented use the ordinary operator lookup process, i.e.
dict1.__or__ and dict2.__ror___
[if __operatorhook_or__ is not defined, treat the same as if it had returned
NotImplemented]
Then a user could simply do:
def __operatorhook_or__(obj1, obj2):
if isinstance(obj1, dict) and isinstance(obj2, dict):
return {**obj1, **obj2}
return NotImplemented
def __operatorhook_ior__(obj1, obj2):
if isinstance(obj1, dict):
obj1.update(obj2)
return obj1
return NotImplemented
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/HTIMLFXLJ22IHLDSZL3N4XPSKNP3WWQL/
Code of Conduct: http://python.org/psf/codeofconduct/