0
我想一個numpy的矩陣傳遞給一個對象的方法,但我不斷收到類型錯誤:test_obj()恰恰1參數(2給出)numpy的矩陣作爲參數傳遞給方法
我覺得矩陣對象不正確解釋爲矩陣對象,但是當相同的代碼作爲簡單函數運行時,它工作正常。我如何讓我的對象方法像簡單的函數一樣工作?
代碼:
from numpy import *
class Tester(object):
def test_obj(x):
print 'test obj:', type(x)
def test_fun(x):
print 'test fun:', type(x)
X = matrix('5.0 7.0')
test_fun(X)
tester = Tester()
tester.test_obj(X)
輸出:
test fun: <class 'numpy.matrixlib.defmatrix.matrix'>
Traceback (most recent call last):
File "/home/fornarim/test_matrix.py", line 22, in <module>
tester.test_obj(X)
TypeError: test_obj() takes exactly 1 argument (2 given)
或者,如果你的'test_obj'方法不以任何依賴或改變對象的狀態(但以某種方式在邏輯上鍊接到它,因此,你喜歡它定義爲類的一部分而不是作爲一個簡單的函數),你也可以使用'@ staticmethod'裝飾器來註釋函數 - 然後它不需要'self'參數。 – 2012-07-30 17:46:17
謝謝,我添加了答案,但我有一種感覺,作爲他的測試對象 – 2012-07-30 17:50:51
作爲其一部分,我想你的原始答案是他需要的,但更好是完整:)我注意到儘管你的回答和編輯(我認爲)對他的問題現在有點不對勁了:在他最初的問題中,test_fun指的是一個函數(不是方法),test_obj是「Tester」對象的一個方法。現在問題'test_fun'和'test_obj'除了名字是相同的。 – 2012-07-31 17:02:31