如何在Python中克隆一个类?

7 投票
4 回答
6168 浏览
提问于 2025-04-15 17:12

我有一个类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

撰写回答