我有以下代码:
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'
我不知道为什么会这样做,并且无法通过搜索找到答案。有人知道这是什么意思吗?
答案 0 :(得分:5)
这里有两个问题:
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
答案 1 :(得分:1)
sumit
是一个函数:您需要用方括号将其调用:print(giventhing.sumit()/2)
答案 2 :(得分:0)
函数是您首先需要调用的函数类型
所以需要:
giventhing = Thing()
print(giventhing.sumit()/2)
因此完全需要括号
这是一个例子:
>>> class A:
def __init__(self,a):
self.a=a
def out(self):
return self.a
>>> A
<class '__main__.A'>
>>> a=A(1)
>>> a.out
<bound method A.out of <__main__.A object at 0x0000005F9D177EB8>>
>>> a.out()
1
>>>