2011-09-09 68 views
0

如何从类0123'中调用类Base中的方法.get_item(Example1()).do_something()Python oop问题

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

你们是不是要调用另一个方法在'__init__ '例2,或者你是否试图调用'__init__'方法本身?其实我不明白你在问什么。请提供更多信息。 – Feanor

+0

我不想从Example1()或Example2()访问Base()类中的方法。 –

+0

@vladislav godorin在它里面有两个“from”,你的句子没有任何意义。你在发布之前不读你写的内容吗? – eyquem

回答

2

如果你想这样的功能,你需要传递BaseExample2家伙:

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) 
0
self.get_item(...) 

Base.get_item(self, ...)