-4

このようなコードを取得しました。

....
class SocketWatcher(Thread):
    ....
    def run(self):
       ....
       TicketCounter.increment()  # I try to get this function  
       ...
....
class TicketCounter(Thread):
    ....
    def increment(self):
    ...

プログラムを実行すると、このエラーが発生しました。

TypeError: unbound method increment() must be called with TicketCounter instance as first argument (got nothing instead)

TicketCounter クラスから SocketWatcher クラスへの increment() 関数を呼び出す方法はありますか? または私の呼び出しは間違っていますか...

4

3 に答える 3

4

TicketCounterクラスから関数を呼び出す前に、まずクラスのインスタンスを作成する必要があります。

class SocketWatcher(Thread):
    ....
    def run(self):
       ....
       myinstance = TicketCounter()
       myinstance.increment()

それ以外の場合、メソッドはどこにもバインドされません。インスタンスを作成すると、メソッドがインスタンスにバインドされます。

于 2013-09-14T13:22:18.090 に答える
0

メンバー関数はクラスのインスタンスの一部です。したがって、呼び出したいときはいつでも、クラス名自体ではなく、クラスのインスタンスで呼び出す必要があります。

あなたがすることができます:

TicketCounter().increment()

これが行うことは、オブジェクトを初期化してからこの関数を呼び出すことです。次の例はそれを明確にします。

class Ticket:

    def __init__(self):

        print 'Object has been initialised'

    def counter(self):

        print "The function counter has been invoked"

そして、これを説明する出力:

>>> Ticket().counter()
Object has been initialised
The function counter has been invoked
>>> 
于 2013-09-14T14:29:09.370 に答える