1

我是蟒蛇新手。有一个带有我想使用的方法(getService)的python类

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

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

   def anotherMethod():
      ... do more stuff

从另一个班级这就是我所说的

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

我做错了什么?这些类位于单独的文件中

4

2 回答 2

3

我的服务不在__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')
于 2013-06-26T21:22:39.657 回答
2

该行:

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

不缩进成为__init__函数的一部分,在哪里self定义。

如果您想让它成为该功能的一部分,那么您需要缩进它。

于 2013-06-26T21:23:01.757 回答