[Python-Dev] Proper way to specify that a method is not defined for a type (original) (raw)

R. David Murray rdmurray at bitdance.com
Tue Jun 7 14:45:03 EDT 2016


For those interested in this topic, if you are not already aware of it, see also http://bugs.python.org/issue25958, which among other things has a relevant proposed patch for datamode.rst.

On Tue, 07 Jun 2016 10:56:37 -0700, Guido van Rossum <guido at python.org> wrote:

Setting it to None in the subclass is the intended pattern. But CPython must explicitly handle that somewhere so I don't know how general it is supported. Try defining a list subclass with len set to None and see what happens. Then try the same with MutableSequence.

On Tue, Jun 7, 2016 at 10:37 AM, Ethan Furman <ethan at stoneleaf.us> wrote: > For binary methods, such as add, either do not implement or return > NotImplemented if the other operand/class is not supported. > > For non-binary methods, simply do not define. > > Except for subclasses when the super-class defines hash and the > subclass is not hashable -- then set hash to None. > > Question: > > Are there any other methods that should be set to None to tell the > run-time that the method is not supported? Or is this a general mechanism > for subclasses to declare any method is unsupported?



More information about the Python-Dev mailing list