我有一个类列表,我正在尝试动态创建另一个类列表,这样每个类都有一个classmethod
从原始列表中创建一个类的子实例的实例。
问题是所有方法最终都返回同一类的实例(最后一个创建的)。
这是我的代码的最小化版本:
class C1():
var = 1
class C2():
var = 2
parents = (C1, C2)
children = []
wrappers = []
for c in parents:
class ChildClass(c):
pass
children.append(ChildClass())
class Wrapper():
@classmethod
def method(cls):
cls.wrapped = ChildClass()
wrappers.append(Wrapper)
print(list(child.var for child in children))
for wrapper in wrappers:
wrapper.method()
print(list(wrapper.wrapped.var for wrapper in wrappers))
输出:
[1, 2]
[2, 2]
您可以看到该children
列表包含不同的实例,而在这两种情况下都classmethod
创建了一个子实例C2
。
如何修复我的代码,以便每个都classmethod
创建正确类的实例?
(我使用的是 python 2.7.4)