当前位置 : 首页 » 互动问答 » 正文

Python AttributeError:对象没有属性

分类 : 互动问答 | 发布时间 : 2012-07-27 18:24:10 | 评论 : 4 | 浏览 : 194062 | 喜欢 : 36

我有一个MyThread课程。在那我有一个方法样本。我试图从具有相同的对象上下文运行它。请看一下代码:

 class myThread(threading.Thread):
    def __init __(self,threadID,name,counter,redisOpsObj):
        threading.Thread .__的init __(个体经营)
        self.threadID = threadID
        self.name = name
        self.counter = counter
        self.redisOpsObj = redisOpsObj

    def stop(self):
        self.kill_received = True

    def样本(个体经营):
        打印“你好”

    def run(self):
        time.sleep(0.1)
        打印“\ n开始”+ self.name
        self.sample()

看起来很简单不是吗。但是当我运行它时,我得到了这个错误

AttributeError:'myThread'对象没有属性'sample'现在我有了那个方法,就在那里。那有什么不对?请帮助

编辑:这是stacktrace

 Starting Thread-0

启动Thread-1
线程Thread-0中的异常:
回溯(最近的呼叫最后):
文件“/usr/lib/python2.6/threading.py”,第525行,在__bootstrap_inner中
self.run()
文件“./redisQueueProcessor.py”,第51行,在运行中
self.sample()
AttributeError:'myThread'对象没有属性'sample'

线程Thread-1中的异常:
回溯(最近的呼叫最后):
文件“/usr/lib/python2.6/threading.py”,第525行,在__bootstrap_inner中
self.run()
文件“./redisQueueProcessor.py”,第51行,在运行中
self.sample()
AttributeError:'myThread'对象没有属性'sample'

我这样称呼它是

 arThreads = []
maxThreads = 2;

我在范围内(maxThreads):
    redisOpsObj = redisOps()
    arThreads.append(myThread(i,“Thread  - ”+ str(i),10,redisOpsObj))

抱歉,我无法发布redisOps类代码。但我可以向你保证,它运作得很好

回答(4)

  • 1楼
  • 你的缩进是愚蠢的,你混合了标签和空格。运行脚本python -tt to verify.

  • 2楼
  • Python多线程时常见这类错误。会发生的情况是,在翻译拆除时,相关模块(在这种情况下为myThread)经过一种 del myThread .

    The call self.sample()大致相当于 MyThread的.__字典__ [ “样品”](个体)。 但是如果我们在解释器的拆卸序列中,那么它自己的已知类型字典可能已经删除myThread,现在它基本上是NoneType - 并且没有'sample'属性。

  • 3楼
  • Python通过内部更改名称来包含类名来保护这些成员。 您可以访问object._className__attrName等属性。

  • 4楼
  • 如果你使用python 3>这也可能发生如果你使用以双下划线开头的私有变量,例如self .__ yourvariable,那么你可能会遇到一些可能遇到这个问题的人

相关阅读:

raw_input function in Python

How to import the class within the same directory or sub directory?

How to return dictionary keys as a list in Python?

Python `if x is not None` or `if not x is None`?

Assign output of os.system to a variable and prevent it from being displayed on the screen

How can I reverse a list in Python?

What are the differences between type() and isinstance()?

How to install packages using pip according to the requirements.txt file from a local directory?

How to lowercase a string in Python?

Correct way to write line to file?