在Python中如何将兔子添加到数字中?
我可以向Rabbit类添加一个数字,但反过来不行:在Python中如何将兔子添加到数字中?,python,magic-methods,Python,Magic Methods,我可以向Rabbit类添加一个数字,但反过来不行: class Rabbit: def __init__(self, age): self.age = age def __add__(self, rabbit): if isinstance(rabbit, int): return self.age + rabbit else: return self.age + rabbit.a
class Rabbit:
def __init__(self, age):
self.age = age
def __add__(self, rabbit):
if isinstance(rabbit, int):
return self.age + rabbit
else:
return self.age + rabbit.age
print(Rabbit(10) + 5)
print(5 + Rabbit(10))
最后一行返回:
TypeError: unsupported operand type(s) for +: 'int' and 'Rabbit'
这是因为在第一个打印表达式(有效)中,Rabbit.\uuuuu add\uuuuu
被称为underground,而在第二个表达式中,int.\uuuuu add\uuuuu
被称为underground,并且int.\uuuuu add\uuuu
方法对兔子不起作用。什么是最好的方式使这项工作?我希望能够将Int添加到兔子,并将兔子添加到Int。有关的文档,以下是您需要的:
- 方法
是当左实例来自类时,在这里处理右实例,右实例可以来自类或其他\uuuuu add\uuuuuu
- 方法
是当右边的实例不是来自类,而左边的实例是,您在这里\uuuu radd\uuuu
def __radd__(self, value):
if isinstance(value, int):
return self.age + value
print("Other type", type(value)) # handle non-int as you want
给予
print(Rabbit(10) + 5) # add 15
print(Rabbit(10) + Rabbit(5)) # add 15
print(5 + Rabbit(10)) # radd 15
print(5.2 + Rabbit(10)) # radd 'Other type float'