python - 我如何子类化 threading.Event?

标签 python subclass factory metaclass

在 Python 2.7.5 中:

from threading import Event

class State(Event):
    def __init__(self, name):
        super(Event, self).__init__()
        self.name = name

    def __repr__(self):
        return self.name + ' / ' + self.is_set()

我得到:

TypeError: Error when calling the metaclass bases
function() argument 1 must be code, not str

为什么?

我所知道的关于线程的一切。我从中学到的事件:http://docs.python.org/2/library/threading.html?highlight=threading#event-objects

threading.Event() 是类 threading.Event 的工厂函数是什么意思??? (呃......对我来说就像普通的旧实例)。

最佳答案

threading.Event 不是一个类,它是 threading.py 中的函数

def Event(*args, **kwargs):
    """A factory function that returns a new event.

    Events manage a flag that can be set to true with the set() method and reset
    to false with the clear() method. The wait() method blocks until the flag is
    true.

    """
    return _Event(*args, **kwargs)

由于此函数返回 _Event 实例,您可以将 _Event 子类化(尽管导入和使用带下划线的名称绝不是一个好主意):

from threading import _Event

class State(_Event):
    def __init__(self, name):
        super(Event, self).__init__()
        self.name = name

    def __repr__(self):
        return self.name + ' / ' + self.is_set()

关于python - 我如何子类化 threading.Event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998651/

相关文章:

c++ - C++中父类对象调用子类方法

javascript - Angularjs:实现与工厂相同的服务结构

json - 如何在 AngularJS 中使用工厂和 $http 访问 JSON 文件中的数据?

python - os X 上的 virtualenv 错误

python - 如何将图像转换为特定文件大小?

Python jsonschema,什么都不允许,或者只需要两个字段之一

python - 修复错误 'slice' 错误以在单独的 Excel 单元格中添加元素列表

java - 在静态测试文件中调用非静态方法

swift - 在子类 SKSpriteNode 中创建 SKSpriteNode 是一个好习惯吗?

c++ - 有没有办法从保存类名的字符串中实例化对象?