我有一节课
class ActivationResult(object):
def __init__(self, successful : bool):
self._successful = successful
def getSuccessful(self) -> bool:
return self._successful
还有一个测试
def testSuccessfulFromCreate(self):
target = ActivationResult(True)
self.assertEquals(target._successful, True)
self.assertEquals(target.getSuccessful, True)
第一个断言是好的,但是第二个断言失败,因为AssertionError: <bound method ActivationResult.getSuccess[84 chars]EB8>> != True
同样的事情发生了,当我试图打印它。为什么?
你得到的是方法,而不是调用它。
尝试:
第一次就可以了,因为您得到了属性
_successful
,它是用True
正确初始化的。但是当你调用
target.getSuccessful
时,它会给你一个method对象本身,你似乎想实际调用那个方法。说明
下面是打印对象方法时发生的相同情况的示例:
我们有一个类,有一个方法。
现在,如果我们打印它,但不调用它:
我们得到的输出与你的文章相同。这就是方法在打印时的表示方式。
现在,如果我们打印并实际调用它:
方法被调用(它打印
Hello SO!
),它的返回也被打印(42
)相关问题 更多 >
编程相关推荐