如何在班级.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())
答案 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, ...)