3

我对 Python 和一般编程很陌生,所以请原谅缺少“fu”。:)

我无法理解这个类调用:

片段

class bar:
    def __init__(self, a):
        self.a = a
    def __add__(self, b):
        s = self.a + b.a
        return s

结束片段

所以,从口译员那里,如果我发出:

x = bar(10)
y = bar(20)
z = x + y
print(z)

我得到'30'回来。这是正确的。

我看到 self.a 是如何创建的,但我不明白如何创建 ba 来进行加法。

任何指导表示赞赏。

4

3 回答 3

4

当您调用x + y它时,它实际上被翻译为:

x.__add__(y)

因此,这个方法被称为:

__add__(self, b)  # __add__(x, y)

结果是:

s = x.a + y.a     # 30
return 30
于 2013-07-10T15:28:28.700 回答
3

在此代码中,没有创建 ba,而是正在访问它。您基本上将 y 作为参数 b 传递,a因为它是 type 的对象,所以它已经有一个与之关联的属性bar。如果您想逐步完成您的代码,请访问http://www.pythontutor.com

于 2013-07-10T15:28:51.147 回答
0

x = bar(a)创建一个bar值为“a”的类的对象。每个bar对象都有一个名为 的属性/变量a

在中, xx + y的函数作为参数被调用。addy

所以b = y,意思b.a = y.a = 20

于 2013-07-10T15:29:45.597 回答