我有这样的事情:
class exampleClass(object):
def doSomething(self,number):
return number + 1
class exampleClass2(exampleClass):
def callDefDoSomething(self):
print exampleClass.doSomething(5)
exampleClass2.callDefDoSomething()
-
TypeError: unbound method callDefDoSomething() must be called
with exampleClass2 instance as first argument (got nothing instead)
我开始在Python中学习对象,但我无法找到解决方案:(
答案 0 :(得分:2)
您需要创建一个类的实例,即一个活动对象,以使工作正常:
class exampleClass(object):
def doSomething(self,number):
return number + 1
class exampleClass2(exampleClass):
def __init__(self):
self.member1 = exampleClass()
def callDefDoSomething(self):
print self.member1.doSomething(5)
object2 = exampleClass2()
object2.callDefDoSomething()
答案 1 :(得分:1)
只能为不是类的实例调用常规类方法。所以,如果你想调用callDefDoSomething,你必须首先实例化exampleClass2。您还必须在callDefDoSomething调用中实例化exampleClass。
class exampleClass(object):
def doSomething(self,number):
return number + 1
class exampleClass2(exampleClass):
def callDefDoSomething(self):
exampleClassInstance = exampleClass()
print exampleClassInstance.doSomething(5)
exampleClass2Instance = exampleClass2()
exampleClass2Instance.callDefDoSomething()
如果你想在类上调用方法,你应该尝试classmethods。查看python教程中classes的文档。
答案 2 :(得分:1)
您可以使用:
class exampleClass(object):
def doSomething(self,number):
return number + 1
class exampleClass2(exampleClass):
def callDefDoSomething(self):
print super(exampleClass2,self).doSomething(5)
example = exampleClass2()
example.callDefDoSomething()
答案 3 :(得分:0)
doSomething
是exampleClass
的一种方法。因此,必须为此类的实例调用它。
在callDefDoSomething
中,您使用
exampleClass.doSomething(5)
但是, exampleClass
不是此类的实例,而是类本身。你想在这里使用的是
self.doSomething(5)
self
指的是exampleClass2 , for which
callDefDoSomethings is invoked, which, due to inheritance, is an instance of
exampleClass`的实例。