Python oop问题

时间:2011-09-09 09:01:07

标签: python

如何在班级.get_item(Example1()).do_something()内调用课程Base中的方法Example2

class Base:

    items = []

    def add_item(self, item):
        self.items.append(item)

    def get_item(self, item):
        return self.items[0]

class Item:
    pass

class Example1(Item):

    def do_something(self):
        print('do_something()')

class Example2(Item):

    def __init__(self):
        '''
        How call this method .get_item(Example1()).do_something() ?
        '''

if __name__ == '__main__':

    base = Base()
    base.add_item(Example1())
    base.add_item(Example2())

2 个答案:

答案 0 :(得分:2)

如果您需要此类功能,则需要将Base传递给Example2家伙:

class Example2(Item):

    def __init__(self, base):
         self.base = base
         self.base.get_item(Example1()).do_something()

         # or if don't want to store base, and just call its method once:
         base.get_item(Example1()).do_something()

if __name__ == '__main__':

    base = Base()
    base.add_item(Example1())
    base.add_item(Example2(), base)

答案 1 :(得分:0)

self.get_item(...)

Base.get_item(self, ...)