我有以下代码:
class Thing:
def __init__(self):
self.a = 30
self.b = 10
def sumit(self):
return self.a + self.b
giventhing = Thing
print(giventhing.sumit/2)
我收到这个错误:
TypeError: unsupported operand type(s) for /: 'function and 'int'
请您参考如下方法:
这里有两个问题:
sumit是实例方法,因此您需要在实例上调用它,而不是类(或类型)。- 要执行可调用对象,例如方法,您需要使用属性语法,即
method(),注意末尾的()。
做 giventhing = Thing 不会给你一个实例,它会给你一个类/类型本身的引用,这只有在你想对类成员进行操作时才有用,这是不是您的用例。
执行giventhing.sumit/2,不会将sumit的结果除以2。事实上,giventhing.sumit会产生对函数本身的引用,而不是它的结果。您需要调用函数以获取其返回值,即 sumit()
固定代码:
giventhing = Thing() # You need an instance of Thing
print(giventhing.sumit() / 2) # You need to actually call sumit on the instance
