需要帮助介绍此代码的逻辑

时间:2013-07-10 15:26:00

标签: python

我对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是如何创建的,但我不明白如何创建b.a来进行添加。

感谢任何指导。

3 个答案:

答案 0 :(得分:5)

当您致电x + y时,它实际上已翻译为:

x.__add__(y)

因此,这个方法被称为:

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

结果是:

s = x.a + y.a     # 30
return 30

答案 1 :(得分:4)

在此代码中,未创建b.a,正在访问它。您基本上将y作为参数b传递,因为它是a类型的对象,因此已经有一个bar属性与之关联。如果您想要单步执行代码,请转到http://www.pythontutor.com

答案 2 :(得分:1)

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

x + y中,使用add作为参数调用x的函数y

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