0

ビジター パターンを使用して最初のクラスから self.coin 値を取得し、それを 2 番目のクラスのメソッドに返そうとしていますが、機能せず、常に何も返されません... 誰か助けてくれますか?

class coin_collector(Observer):
    def __init__(self):
        super(Observer, self).__init__()
        self.coin_count = 0
        self.run = True
        self.coin = 0

    def acceptVisitor(self, visitor):
        visitor.visit(self)

    def update(self, observable, other):
        me = coin_collector()
        me.coin_Count(other, True)

    def coin_Count(self, value, TF):
        run = TF
        if run:
            self.coin = value
            print self.coin
        return self.coin

    def __str__(self):
        return self.__class__.__name__

#this is part of a different class in a different file 
    def visit(self, location):
        location.coin_Count(0, False)

    def update(self):
        visitee = coin_collector()
        self.c_Count = self.visit(visitee) # for some reason this always returns none
        print self.c_Count, "working" # this always prints none...
4

1 に答える 1

0

では、 から始めましょうCoin Collector。彼のcoin属性は 0 に設定されています。and 関数を持つ 2 番目のクラスもupdateありvisitます。

update 関数は、呼び出しごとに新しいを作成します。 次に、関数coin_collectorの戻り値を に代入します。では関数を見てみましょう。visitself.c_Countvisit

真新しいを受け取り、Nonecoin collectorを返します。 as として渡す場合、値パラメーターをフィールドに割り当てます。coinTrueTF

関数から戻った後、coin_count関数内で何もしないvisitので、戻り値は失われます。そのため、 の結果を代入しようとするとself.visit、 が得られますNone

于 2013-03-09T20:45:02.543 に答える