gpt4 book ai didi

python - 在 python 中重写 __import__

转载 作者:行者123 更新时间:2023-11-28 17:35:33 25 4
gpt4 key购买 nike

当我动态导入派生类时,我需要重写 python 中的 __import__ 函数。 (我只能访问基类代码)。例如:

Servers=[]

class ServerBase(object):
name='' #name of the specific server class, for each server class

def __init__(self):
self.connected = False
self.name = self.__class__.__module__.capitalize()
Servers.append(self)

当导入派生类时,我需要调用基类的 __init__ 将其添加到 Servers[] 列表中,因此在主模块中我调用:

__import__('DerivedClassName')

Base __init__ 将被调用

最佳答案

我最终对 Servers 类进行了元类化:

Servers=[]

''' Servers Metaclass that handles addition of servers to the list '''
class MetaServer(type):
def __init__(self, name, bases, attrs):
self.name = name.capitalize()
Servers.append(self)
super(MetaServer, self).__init__(name, bases, attrs)

class ServerBase:
__metaclass__ = MetaServer
name='' #name of the specific server class, for each server class

def __init__(self):
self.connected = False

这样,每次导入派生类时都会调用 meta-init。正是我想要的。谢谢@MartijnPieters

关于python - 在 python 中重写 __import__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com