2016-12-31 53 views
0

对于上下文,我对通常的类和Python非常陌生。如何调用调用类的属性

我有Bot类和BotSub

Bot我有事self.driver,后来我打电话BotSub()。如何拨打Botself.driver

回答

1

你必须传递给Bot对象(这是self参数)一个参考BotSub类,并且它必须使用回叫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