0

私はファイルnotifications.pyとを持っていますcomments.py。通知にはGetNotifications、関数を持つクラスがありますgetNotifs(arg1, arg2)。私はcomments.pyでこのメソッドを呼び出したいので、次のようにします。

from notifications import GetNotifications

次に、クラスのインスタンスを作成します。

getNotifsInstance = GetNotifications()

次に、getNotifsを呼び出そうとします。

notifsDictionary = getNotifsInstance.getNotifs(arg1, arg2)

ただし、次のエラーが発生します。 TypeError: getNotifs() takes at most 2 arguments (3 given)

2つしか与えていないのに、なぜ3つの引数を与えていると言っているのですか?

4

4 に答える 4

3

あなたはそれに3つの引数を与えています:インスタンスメソッドを呼び出すとき、インスタンスは最初のパラメータとして渡されます。selfメソッドの最初のパラメーターとして引数を追加する必要があります。

于 2012-04-17T15:08:23.477 に答える
3

宣言するとき、あなたはおそらくself議論を忘れているでしょうgetNotifs()

def getNotifs(self, arg1, arg2):
   ...
于 2012-04-17T15:09:00.020 に答える
1

2つしか与えていないのに、なぜ3つの引数を与えていると言っているのですか?

getNotifysオブジェクトのメンバー関数として関数にアクセスしているという理由だけでgetNotifsInstance。メンバー関数の最初の引数は、(self)オブジェクト参照自体です。

于 2012-04-17T15:09:14.987 に答える
1

クラスでは、次の3種類のメソッドを定義できます。

class A(object):
    def instance_method(*args):
        print '%d arguments given' % len(args)
    @classmethod
    def class_method(*args):
        print '%d arguments given' % len(args)
    @staticmethod
    def static_method(*args):
        print '%d arguments given' % len(args)

また、インスタンスでそれらを呼び出すと、インスタンスメソッド(インスタンス自体になります)とクラスメソッド(インスタンスのクラスになります)に渡される追加の引数を取得します。

>>> a = A()
>>> a.instance_method('a', 'b')
3 arguments given
>>> a.class_method('a', 'b')
3 arguments given
>>> a.static_method('a', 'b')
2 arguments given

あなたの場合、それはおそらくself(インスタンス自体)ですが、classmethodデコレータでメソッドをデコレートする場合(その場合、最初の引数としてクラスが渡される)、結果は同様になります。

于 2012-04-17T15:22:14.453 に答える