如果我尝试从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)
谢谢你!
答案 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
首先需要有类的实例,然后可以在该实例上调用函数。