Is there a __dunder__ method corresponding to |= (pipe equal/update) for dicts in python 3.9?

后端 未结 3 1386
故里飘歌
故里飘歌 2021-01-18 18:43

In python 3.9, dictionaries gained combine | and update |= operators. Is there a dunder/magic method which will enable this to be used for other cl

相关标签:
3条回答
  • 2021-01-18 19:23

    Yes, the method for | is __or__ and the method for |= is __ior__. You can see an (approximate) Python implementation here in PEP 584.

    def __or__(self, other):
        if not isinstance(other, dict):
            return NotImplemented
        new = dict(self)
        new.update(other)
        return new
    
    def __ior__(self, other):
        dict.update(self, other)
        return self
    
    0 讨论(0)
  • 2021-01-18 19:24

    No need to dig through the source. It's clearly documented as __or__ and __ior__. https://docs.python.org/3/reference/datamodel.html is the relevant documentation.

    0 讨论(0)
  • 2021-01-18 19:36

    Yes, | and |= correspond to __or__ and __ior__.

    Don't look at the python source code, look at the documentation. In particular, the data model.

    See here

    And note, this isn't specific to python 3.9.

    0 讨论(0)
提交回复
热议问题