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函数可以得到预期的结果。不幸的是,我无法回答自己的问题并将其标记为已解决。