2013-06-26 76 views
1

我是一個蟒蛇新手。有與我想要使用如何在類python中從類B調用類A中的方法?我收到「自己沒有定義」

class ServicesManager 
    def __init__(self, logger): 
     ...initialize stuff 

    def getService(self, name): 
     ... do some stuff 

    def anotherMethod(): 
     ... do more stuff 

從另一個類的方法(的getService)Python類,這是如何我叫它

from ServicesManager import ServicesManager 
class serviceCaller: 
    def __init__(self, logger): 
     self.logger = logger 
     self.sm = ServicesManager(self.logger) 

    myService = self.sm.getService('serviceA') 

但是當我執行它,我收到

Traceback (most recent call last): 
    File "./serviceCaller.py", line X, in <module> 
    class serviceCaller: 
    File "./serviceCaller.py", line Y, in serviceCaller 
    myService = self.sm.getService('serviceA') 
NameError: name 'self' is not defined 

我會做什麼錯?該班是分隔的文件

回答

3

爲myService不__init__。這是在課堂上的水平,這意味着它在課程結束時被執行。但是,在那個時候,沒有這個類的實例,它通常是self。 (畢竟,班級還不存在!)。

我最好的猜測是,你要做到這一點:

from ServicesManager import ServicesManager 
class serviceCaller: 
    def __init__(self, logger): 
     self.logger = logger 
     self.sm = ServicesManager(self.logger) 

     #Notice myService is indented under `__init__`. 
     myService = self.sm.getService('serviceA') 
2

行:

myService = self.sm.getService('serviceA') 

沒有縮進是__init__功能,其中self定義的一部分。

如果你的意思是它是功能的一部分,那麼你需要縮進它。

相關問題