我正在用Python学习OOP,我遇到了想要添加两个对象的情况。我见过有人使用以下格式:
class GFG:
def __init__(self, val):
self.val = val
def __add__(self, val2):
return GFG(self.val + val2.val)
obj1 = GFG("Geeks")
obj2 = GFG("ForGeeks")
obj3 = obj1 + obj2
print(obj3.val)
但我想知道我们是否可以使用
def add()
代替 def __add__()
。如果是或否,请您详细解释一下为什么它有效或无效。
我尝试用
def __add__()
替换 def add()
但出现了如下错误:
Traceback (most recent call last):
File "Solution.py", line 11, in <module>
obj3 = obj1 + obj2
TypeError: unsupported operand type(s) for +: 'GFG' and 'GFG'
1。 __ 添加__( ) : 这是 Python 中的一种特殊方法,也称为“魔术方法”,其主要目的是定义加法运算符 (+) 在与类的对象一起使用时的行为方式。每当您在同一类的两个对象之间使用 + 时,它就会自动调用。该定义需要两个参数:self(指左操作数对象)和other(指右操作数对象)。该方法应该返回一个新对象,表示两个原始对象相加的结果。
2。添加(): 这是一个常规方法,与类中的任何其他方法一样定义。它在语言中没有特殊的作用,并且与加法运算没有内在联系。您可以将其用于各种目的,例如执行计算、更新数据或与其他对象交互。
主要差异以及出现错误的原因:
__ add__( ) 特定于对象添加,而 add( ) 可以用于任何目的。
__ add__( ) 由 + 运算符自动调用,而 add( ) 需要作为方法显式调用。
示例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def add_age(self, years):
self.age += years
person1 = Person("John", 30)
person1.add_age(5)
print(person1.age) # 35