2016-12-31 19 views
0

私は文脈のために、一般的にクラスとPythonにはとても新しいです。呼び出すクラスのプロパティを呼び出す方法

私は何かself.driverを持っている、と後で私がBotSub()呼び出すクラスBotとクラスBotBotSub

を持っています。 BotSubから、Botさんのself.driverさんへの連絡方法を教えてください。

答えて

1

あなたはBotSubクラスに(self引数である)Botオブジェクトへの参照を渡す必要があり、それがBotオブジェクトのメソッドをコールバックするためにそれを使用する必要があります。例えば

class Bot(object): 
    def __init__(self): 
     self.botsub = BotSub(self) 

    def driver(self): 
     ... 

    def update(self): 
     self.botsub.dothings() 

class BotSub(object): 
    def __init__(self, bot): 
     self.bot = bot 

    def dothing(self): 
     self.bot.driver() 

また、あなたがBotSub上の属性として、親ボットインスタンスを維持する必要はありません - あなたが必要となり、その上にメソッドを呼び出すたびただ、それをパラメータとして渡しますボットへの参照:

... 
class Bot(object): 
    ... 
    def update(self): 
     self.botsub.dothings(self) 

class BotSub(object): 
    ... 
    def dothings(self, bot): 
     bot.driver() 
     ... 
+0

が表示されます。それは理にかなっている。 'Bot'で' self'を更新すると、最初の 'init'ializationの後でも' BotSub'で自動的に更新されますか? – Rob

+0

はい、BotSubには、実際のBotオブジェクトへの参照があります。その中の変更は、ボットブスコード上で(正確に同じオブジェクトを参照するため)表示されます。 – jsbueno

関連する問題