2013-06-26 38 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定义的一部分。

如果你的意思是它是功能的一部分,那么你需要缩进它。

相关问题