如何在Python中克隆一个类?
我有一个类A,我想要一个类B,功能完全一样。 我不想或者不能通过继承的方式来创建B,比如不想写成class B(A):pass。 但是我希望B和A的功能一模一样,同时又希望它们是不同的类,也就是说,id(A)和id(B)要不一样。 注意,我说的是类的克隆,而不是实例。
4 个回答
0
也许我误解了你的问题,但把A放在B里面怎么样呢?
class A:
def foo(self):
print "A.foo"
class B:
def __init__(self):
self._i = A()
def __getattr__(self, n):
return getattr(self._i, n)
9
我想这可能不是你想要的,但看起来问题就是在问这个...
class Foo(object):
def bar(self):
return "BAR!"
cls = type("Bar", (object,), dict(Foo.__dict__))
print cls
x = cls()
print x.bar()
13
我很确定你想做的事情有更好的解决办法,不过这里有一个方法可以让你复制一个类,并给它一个新的ID:
def c():
class Clone(object):
pass
return Clone
c1 = c()
c2 = c()
print id(c1)
print id(c2)
这样会得到:
4303713312
4303831072