2011-09-09 8 views
0

クラスBaseのメソッド.get_item(Example1()).do_something()をクラスExample2の中から呼び出すにはどうすればよいですか?Python oop question

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__に別のメソッドを呼び出すためにしようとしていますが'を呼び出すか、' __init__'メソッド自体を呼び出そうとしていますか?実際に私はあなたが何を求めているのか理解できません。詳細をご記入ください。 – Feanor

+0

私はExample1()またはExample2()からのアクセスがBase()クラスのメソッドにアクセスできません。 –

+0

@vladislav godorin 2つの "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, ...)