我对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来进行添加。
感谢任何指导。
答案 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
。