永不秃头的ssf 2019-01-16 22:26 采纳率: 0%
浏览 490
已采纳

关于类中遍历属性的一个问题(新手,这个问题困扰我很久,希望由一个比较耐心地大神解决问题)

class Medicines(Object):
    medicines=[]
    def addmedicine(self,medicine):
        self.medicines.append(medicine)
    def remmedicine(self,medicine):
        self.medicines.remove(medicine)
    def visit(self,visitor):
        for m in self.medicines:  
          m.accept(visitor)
这个呢是一个类似访问者模式地,我会给这个类的列表加入了两个对象,这两个对象里面都有accept方法,其实我就是想通过循环列表,让这两个对象调用自己的accept方法,但是最终结果只有一个,是列表的最后一个元素。

为什么会这样呢?是什么原因?如何解决?
同时我又尝试了一个之前试过的方法,

self.__dict__[m].accept。

这个方法之前成功过,但当时的操作只是读取列表里面对象的值,而不是调用里面对象的方法,在这里却出现了keyerror这个错误。
为什么会这样?是什么原因?

希望有大神能够帮我解决这个问题

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-02-06 20:13
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?