【问题标题】:blinker does not work in Python 2.6闪烁器在 Python 2.6 中不起作用
【发布时间】:2015-02-11 15:21:37
【问题描述】:
import blinker
from blinker import signal

class Ticket():
    @classmethod
    def update(cls):
    pass

ticket_created = signal('CREATED')
ticket_created.connect(Ticket.update)

这个 sn-p 代码在 Python 2.7 上运行良好。但不适用于 Python 2.6。我得到了这个踪迹:

Traceback (most recent call last):
  File "btest.py", line 10, in <module>
    ticket_created.connect(Ticket.update)
  File "/home/gavika/env2/lib/python2.6/site-packages/blinker/base.py", line 113, in connect
    receiver_ref = reference(receiver, self._cleanup_receiver)
  File "/home/gavika/env2/lib/python2.6/site-packages/blinker/_utilities.py", line 134, in reference
    weak = callable_reference(object, callback)
  File "/home/gavika/env2/lib/python2.6/site-packages/blinker/_utilities.py", line 145, in callable_reference
    return BoundMethodWeakref(target=object, on_delete=callback)
  File "/home/gavika/env2/lib/python2.6/site-packages/blinker/_saferef.py", line 143, in __new__
    base.__init__(target, on_delete, *arguments, **named)
  File "/home/gavika/env2/lib/python2.6/site-packages/blinker/_saferef.py", line 185, in __init__
    self.weak_self = weakref.ref(im_self, remove)
TypeError: cannot create weak reference to 'classobj' object

有没有办法让它在 2.6 环境中工作?

【问题讨论】:

  • 你的类必须继承自“object”。

标签: python python-2.7 python-2.6 blinker


【解决方案1】:

是的,新型类就是答案。

class Ticket(object):
    ...

解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多