0

こんにちは私はpythonプログラムに取り組んでいます。クラスの関数からデータを取得できますが、それらにデータを送信できません。

    class someClass:
        someList = []
        def sendMessage(message):
            someList.append(message)

    messageSender = someClass()

    listToSend = [] #loaded elswhere 

    someClass.sendMessage(listToSend[1])

先に進んで実行すると、次のエラーが発生します。

     TypeError: sendMessage() takes exactly 1 argument (2 given)

使用するだけsomeClass.someList = listToSendで機能しますが、これはより大きなプログラムの単体テスト用であるため、sendMessage を機能させる必要があります。何が間違っているのですか?

4

2 に答える 2

1

sendMessage の関数宣言で self パラメータを忘れています。
sendMessage(message)代わりにsendMessage(self, message)

class someClass: someList = [] def sendMessage(self,message): someList.append(メッセージ)

messageSender = someClass()

listToSend = [] #loaded elswhere 

someClass.sendMessage(listToSend[1])

なぜ 2 つの引数を渡したと言われましたか?

クラスのメソッドを呼び出すたびに、たとえば次のようになります。

dog.bark()

self (dog 変数) をメソッドに渡しているため、内部的な呼び出しはdog.bark(self).

ルールは次のとおりです。
メソッド呼び出しの可視パラメータ + 1 = メソッド宣言の可視パラメータ

于 2013-06-28T01:23:27.310 に答える