Python Error未绑定方法?

时间:2015-02-14 21:54:05

标签: python

如果我尝试从https://github.com/ilovecode1/sandshell.py运行命令,则会在下面给出错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unbound method runsingle() must be called with sandshell instance as first argument (got str instance instead)

谢谢你!

2 个答案:

答案 0 :(得分:0)

在Python中,语言的约定是实例方法需要使用特殊的第一个参数(通常称为self),该参数表示将从中调用它们的实际实例对象。

您可以将功能定义更改为:

def runsingle(self, command):
   ...

然后常规使用将按预期工作,例如

ss = sandshell()
ss.runsingle(some_command)

因为特殊的self参数在幕后处理(你不需要在调用函数时明确地提供它)。

如果您希望以 static 方法运行该命令(意味着它不依赖于类对象或从中调用它的实例对象),那么它将被调用为sandshell.runsingle(some_command)没有先创建sandshell类的实例,那么您可以使用staticmethod装饰器:

@staticmethod
def runsingle(command):
    ...

以及其他类函数等等。

答案 1 :(得分:-1)

尝试这样做:

import sandshell

instance = sandshell.sandshell()  # get an instance of the class
instance.runsingle("cd hi")       # call the method runsingle of the instance

首先需要有类的实例,然后可以在该实例上调用函数。