在python中加载类后有没有办法调用函数?

Cai*_*Cai 2 python

我想在类加载后将类注册到管理器,就像 http 处理程序注册到处理程序管理器一样。

可以通过其他方式完成,例如在映射中定义关系或在类定义后调用注册函数。

但是有没有更好的方法来自动执行此操作?


更新:

虽然沙丘的回答满足了我的需要。我正在努力改进这个问题,让它对遇到同样问题的其他人更有用。

以下是示例。

处理程序/__init__.py

handler/basehandler.py - classBase, HandlerManager

handler/handlerA.py - classA(classBase)

处理程序/处理程序B.py - classB(classBase)

handlerA 和 handlerB 包含 classA 和 classB,它们是 classBase 的子类。

classA 处理程序来自 /a/ 的请求,classB 处理程序 /b/

我需要在第一次导入处理程序模块时将它们自动注册到 HandlerManager。

Lei*_*Shi 5

如果这里的“被加载”意味着“被导入”(第一次),那么类装饰器是一个解决方案。下面的示例代码是从这个页面复制的

registry  =  {}

def register(cls):
    registry[cls.__clsid__] = cls
    return cls

@register
class Foo(object):
    __clsid__ = "123-456"

def bar(self):
    pass
Run Code Online (Sandbox Code Playgroud)