2016-12-31 3 views
0

문맥에서 나는 클래스와 파이썬에 대해 매우 익숙하다. 호출 클래스의 속성 호출 방법

나는 클래스 Bot 및 클래스 BotSub Bot에서

뭔가 self.driver을 가지고 있고, 나중에 내가 BotSub()를 호출합니다. BotSub에서 Botself.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 객체에 대한 참조입니다.이 객체의 변경 사항은 botsub 코드에서 즉시 볼 수 있습니다 (정확히 동일한 객체를 볼 수 있기 때문입니다) – jsbueno