【发布时间】:2020-01-11 22:35:11
【问题描述】:
class A:
def __init__(self, x, y):
self.x = x
self.y = y
def method(self):
return A(self.x + 1, self.y + 1)
def method2(self, f):
if self.f().x > 3:
return True
a = A(1, 2)
y = a.method2(a.method())
print(y)
错误发生在有
的那一行if self.f().x > 3:
我不明白为什么它说它没有属性而不是方法。
【问题讨论】:
-
因为方法是一个属性。为什么你认为
self.f()会起作用? -
我写这段代码是为了帮助我理解 OOP。我认为它会起作用,因为 self.f() 将引用 self.method() 然后返回一个新类,我想访问这个类的“x”实例属性。
-
不清楚你为什么这么想: 1. 访问
A.f会给你A 的属性,名称为f 的值(见stackoverflow.com/q/2612610/3001761);或 2.a.method()的值将是"method"。 -
如果
a.method()返回一个新类,为什么它的值会是“方法”? -
嗯,确切地说,所以...为什么 f 在那个方法中是一个值,意味着 self.f 是 self.method?!即使 self.f 确实神奇地使用了 f 的值,那也没有意义。你的期望在我看来完全不合理。
标签: python python-3.x