因此,我刚开始在 python 3 中学习面向对象的编程,遇到了“ __add__
”方法,但我不理解“ strong> other “是,它是做什么的。我试图在互联网上寻找答案,但没有发现任何东西,这是我的代码示例:
import math
class MyClass:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
f = self.x + other.x
e = self.y + other.y
答案 0 :(得分:3)
“ other”是什么以及它做什么。
它是参数的名称。例如,参数def run(bars_by_foo_id)
Foo.update(
bars_by_foo_id.keys,
bars_by_foo_id.values.map do |bar|
{ bar: bar }
end
)
end
是other
的另一个实例。请看以下示例:
MyClass
在这种情况下,a = MyClass(1, 2)
b = MyClass(3, 4)
# the next line calls MyClass.__add__ on the instance a
c = a + b
是a
,而self
是b
。
示例中other
的代码不完整,它实际上应该返回一个新的__add__
实例。
MyClass
答案 1 :(得分:0)
other
在这种情况下称为“参数”。参数有点像函数定义中的“孔”,您以后可以在其中填充称为“参数”的具体值。
例如,在
def foo(a, b):
return a + b
a
和b
是函数foo
以及您调用
foo(3, 5)
然后3
和5
是绑定到参数的参数,因此对于该函数的特定调用,执行的代码为
3 + 5
答案 2 :(得分:0)
other
只是一个参数名称。尽管方法遵循一些约定以使代码更清晰,但是您可以随意调用它。
这是一些通常具有特殊含义的参数名称。
self
:一个参数,应为该方法所来自的实例
被称为
other
:期望作为类实例的参数,但不是
调用方法的人
cls
:类本身
特别是,__add__
运算符调用方法+
。
self + other
...叫什么...
self.__add__(other)
class MyNumber(int):
def __add__(self, other):
print('I am', self)
print('I encountered', other)
return super().__add__(other)
x = MyNumber(2)
y = MyNumber(3)
x + y
I am 2
I encountered 3