0

numpy行列をオブジェクトメソッドに渡そうとしていますが、TypeErrorが発生し続けます:test_obj()は正確に1つの引数を取ります(2つ指定)

マトリックスオブジェクトはマトリックスオブジェクトとして正しく解釈されていないと思いますが、同じコードを単純な関数として実行すると、正常に機能します。オブジェクトメソッドを単純な関数のように機能させるにはどうすればよいですか?

コード:

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)
4

1 に答える 1

5

すべてのオブジェクトのメソッドは暗黙的な自己引数を取るため、メソッド test_fun は

def test_fun(self,arg):

Java とは異なり、Python ではオブジェクトを参照する必要があります。

以下で説明するように、 @staticmethod デコレーターを使用して、関数がオブジェクトへの参照を必要としないことを示すこともできます。

@staticmethod
def test_fun(arg):
于 2012-07-30T17:35:25.553 に答える