gpt4 book ai didi

python - 当我在子类中添加方法时自动填充类中的列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:14 25 4
gpt4 key购买 nike

这里是简化的上下文:

class A(object):
def __init__(self):
self.vocab = [
('method1', self.method1),
('method2', 'arg2', self.method2),
('method3', self.method3),
]

class SubA(A):
def method4(self):
pass
def method5(self, arg5):
pass

class SubB(A):
def method6(self):
pass
def method7(self):
pass

我想用所有子类的所有方法“自动”填充类 A 的 self.vocab 列表,并遵循 self.vocab 初始化中定义的规则。所以在这个例子中,我想在实例化对象时自动添加 method4,...,method7。所以 self.vocab 变成:

    self.vocab = [
('method4', self.method4),
('method5', 'arg5', self.method5),
('method6', self.method6),
('method7', self.method7),
('method1', self.method1),
('method2', 'arg2', self.method2),
('method3', self.method3),
]

我认为我必须将 A 更改为元类并改用 __new__ 因为我认为它必须在实例化之前完成。事实上,类 A 被另一个代码内省(introspection)。 self.vocab 是在实例化期间提取的,这就是为什么我认为必须在此之前完成的原因。

我不知道如何进行以及是否可能。

最佳答案

inspect module包含您为此所需的所有工具。

查看这个问题如何获取一个类的所有方法:How do I get list of methods in a Python class?

您可以使用 self.__class____init__ 中获取您自己的当前类。

关于python - 当我在子类中添加方法时自动填充类中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981431/

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