Python 2.7 重载_udivmod__;方法未按预期工作

Python 2.7 重载_udivmod__;方法未按预期工作,python-2.7,Python 2.7,我在自定义类中添加了一个\uuuuu divmod\uuuu方法。但是,当我在这个类的实例上调用divmod函数时,会返回一个额外的None,以及(div,mod)元组 下面是一个简单的例子: class MyClass: def __init__(self, val): self.val = val def __divmod__(self, other): return np.divmod(self.val, other) m = MyClas

我在自定义类中添加了一个
\uuuuu divmod\uuuu
方法。但是,当我在这个类的实例上调用divmod函数时,会返回一个额外的
None
,以及(div,mod)元组

下面是一个简单的例子:

class MyClass:
    def __init__(self, val):
        self.val = val
    def __divmod__(self, other):
        return np.divmod(self.val, other)

m = MyClass(7)
调用
divmod(m,5)
给出:

((1, 2), None)
然而,我希望结果与直接调用
m.\uuu divmod\uuuu(5)
相同:

(1, 2)
我不明白额外的
None
是从哪里来的。也许神奇的方法
\uuuu divmod\uuuu
还有另一个用途?有人能举个例子吗?

班级学生: definit(self,num): self.num=num

def __divmod__(self,other):
    divmod_tup=divmod(self.num,other.num)
    print("Quotient=",divmod_tup[0])
    print("Remainder=",divmod_tup[1])
s1=学生(66) s2=学生(20)
divmod(s1,s2)

我在Python2和3中的测试,
divmod(m,5)
两个输出:
(1,2)
?您使用的是什么Python-2版本?我在两台不同的计算机(都是Anaconda发行版)上测试了2.7.13和2.7.15。我使用了jupyter python2内核:2.7.13,我通常使用的环境是python3,这是我唯一感谢测试的环境。听起来我的python环境有一个特定的问题。好的,我找到了解决方案。问题发生在IPython会话中,其中divmod函数实际上被numpy的divmod覆盖。使用pythondivmod函数可以得到预期的结果。不幸的是,我无法回答自己的问题并将其标记为已解决。