由于某些原因,大多数类的实例都返回Type错误,表示传递的参数不足,问题出在self上。 这很好用:
class ExampleClass:
def __init__(self, some_message):
self.message = some_message
print ("New ExampleClass instance created, with message:")
print (self.message)
ex = ExampleClass("message")
然而,几乎所有其他类我定义并调用一个实例返回相同的错误。几乎相同的功能:
class Test(object):
def __init__(self):
self.defaultmsg = "message"
def say(self):
print(self.defaultmsg)
test = Test
test.say()
返回一个Type Error,说它需要一个参数。我不仅仅是用这个类来解决这个问题,而且几乎每个我定义的类都有这个问题,我不知道问题是什么。我刚刚更新了python,但之前收到了错误。我对编程很新。
答案 0 :(得分:4)
您必须实例化该类:
test = Test() #test is an instance of class Test
而不是
test = Test #test is the class Test
test.say() #TypeError: unbound method say() must be called with Test instance as first argum ent (got nothing instead)
如果你很好奇,你可以试试这个:
test = Test
test.say(Test()) #same as Test.say(Test())
它有效,因为我将类实例(self)赋予了未绑定的方法!
绝对不建议以这种方式编码。
答案 1 :(得分:2)
您应该添加括号来实例化一个类:
test = Test()
答案 2 :(得分:1)
您的测试是指类本身,而不是该类的实例。要创建实际的测试实例,或“实例化”它,请添加括号。例如:
>>> class Foo(object):
... pass
...
>>> Foo
<class '__main__.Foo'>
>>> Foo()
<__main__.Foo object at 0xa2eb50>
错误消息试图告诉您没有这样的self
对象作为函数参数传递(隐式),因为在您的情况下test.say
将是一个未绑定的方法。