On 15.05.15 01:23, yury.selivanov wrote:
https://hg.python.org/cpython/rev/f0b10980b19e
changeset:   96056:f0b10980b19e
parent:      96054:15701e89d710
user:        Yury Selivanov <yseliva...@sprymix.com>
date:        Thu May 14 18:20:01 2015 -0400
summary:
   inspect: Micro-optimize __eq__ for Signature, Parameter and BoundArguments

Provide __ne__ method for consistency.

files:
   Lib/inspect.py |  32 ++++++++++++++++++++++----------
   1 files changed, 22 insertions(+), 10 deletions(-)


diff --git a/Lib/inspect.py b/Lib/inspect.py
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -2353,11 +2353,15 @@
          return hash((self.name, self.kind, self.annotation, self.default))

      def __eq__(self, other):
-        return (issubclass(other.__class__, Parameter) and
-                self._name == other._name and
-                self._kind == other._kind and
-                self._default == other._default and
-                self._annotation == other._annotation)
+        return (self is other or
+                    (issubclass(other.__class__, Parameter) and
+                     self._name == other._name and
+                     self._kind == other._kind and
+                     self._default == other._default and
+                     self._annotation == other._annotation))

It would be better to return NotImplemented if other is not an instance of Parameter.

        if self is other:
            return True
        if not isinstance(other, Parameter):
            return NotImplemented
        return (self._name == other._name and
                self._kind == other._kind and
                self._default == other._default and
                self._annotation == other._annotation)

And why you use issubclass() instead of isinstance()?

+    def __ne__(self, other):
+        return not self.__eq__(other)

This is not need (and incorrect if __eq__ returns NotImplemented). The default __ne__ implementations calls __eq__ and correctly handles NotImplemented.


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to