求教第042讲课后作业测试题2
(代码1)class Foo:
def foo(self):
self.foo = "I love FishC.com!"
return self.foo
>>> foo = Foo()
>>> foo.foo()
'I love FishC.com!'
(代码2)
class Foo:
def __init__(self):
self.foo = "I love FishC.com!"
def foo(self):
return self.foo
>>> foo = Foo()
>>> foo.foo()
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
foo.foo()
TypeError: 'str' object is not callable
题目中举例的两段代码都是类的属性名和方法名相同的情况,为什么代码1可以运行?
谢谢各位大神赐教!!! 第二个代码,Python觉得你想访问foo属性,然后发现你在这个属性值后面加了个括号,就报错了。 可以这样理解。
程序1,先调用方法名,再调用属性名,这样foo.foo()时foo还没有被属性名覆盖
程序2,__init__先将foo变成属性名,再调用foo()时就出错了。
页:
[1]