我對linux中的python腳本非常陌生,並且在終端中執行它們。我正在嘗試調試幾個互相交互的腳本,但我不明白如何在命令行中訪問腳本的某些部分。下面是我正在練習的示例測試腳本。使用類和函數在命令行中調試Python
文件名爲:
test.py
的腳本是:
class testClass():
def __init__(self, test):
self.test = test
def testing():
print "this wont print"
def testing2():
print "but this works"
在終端,如果我去到該文件所在的文件夾,然後嘗試打印測試()函數
python -c 'import test; print test.testClass.testing()'
我得到一個錯誤說
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: unbound method testing() must be called with testClass instance as first argument (got nothing instead)
但如果我嘗試打印testing2()函數
python -c 'import test; print test.testing2()'
它將打印「但這部作品」
我怎麼會去執行測試()函數,使其打印。我嘗試過把各種論點放在那裏,但沒有任何作用。
感謝
'testing2()'是一個函數,而'testClass.testing()'是一個**方法**。您需要先創建一個'testClass'的實例,然後在該實例上調用'testing()'。但爲了實現這一點,你需要使''(')'將'self'作爲第一個參數(或者將其定義爲一個靜態方法,如果這是你真正想要的)。 – 2015-04-02 15:32:46
另外,沒有理由使用非常有限的'python -c'...''。相反,通過在你的shell上運行'python'(從同一個工作目錄)啓動一個[交互式Python解釋器](https://docs.python.org/2/tutorial/interpreter.html#interactive-mode),然後輸入相同的語句,並享受[交互式檢查](https://docs.python.org/2/tutorial/introduction.html#using-python-as-a-calculator)您的代碼的好處。 – 2015-04-02 15:48:09
是的,我甚至不知道這是一件事哈哈。將從現在起用 – 2015-04-02 15:52:42