0

我正在尝试使用访问者模式从第一类获取 self.coin 值并将其返回给第二类中的方法,但它不起作用,它总是不返回任何内容......有人可以帮忙吗?

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。您还有第二个带有updateandvisit函数的类。

update 函数在每次调用时创建一个新函数。 coin_collector然后它将visit函数的返回值分配给self.c_Count。现在让我们看看这个visit函数。

它接受一个全新的coin collector并返回Nonecoin如果您传递Trueas ,它会将其 value 参数分配给该字段TF

coin_count函数返回后,您不会在visit函数中执行任何操作,因此返回值会丢失。这就是为什么当您尝试分配 的结果时self.visit,您会得到一个None.

于 2013-03-09T20:45:02.543 回答