我有一个A类,我想要一个具有完全相同功能的B类。 我不能或不想从B继承,比如做B(A)类:传递 我仍然希望B与A相同,但有一个不同的i:id(A)!= id(B) 注意,我不是在谈论实例,而是要克隆的类。
答案 0 :(得分:13)
我很确定你想要做的事情可以用更好的方式解决,但是这里有一些东西能让你克服一个带有新id的类:
def c():
class Clone(object):
pass
return Clone
c1 = c()
c2 = c()
print id(c1)
print id(c2)
给出:
4303713312
4303831072
答案 1 :(得分:7)
我想这不是你想要的,但它的问题似乎要求......
class Foo(object):
def bar(self):
return "BAR!"
cls = type("Bar", (object,), dict(Foo.__dict__))
print cls
x = cls()
print x.bar()
答案 2 :(得分:0)
也许我误解了你的问题但是在B中包装A怎么样?
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)
答案 3 :(得分:-1)
您可以通过继承克隆该类。否则,您只是传递对类本身的引用(而不是对类的实例的引用)。你为什么要复制课程呢?很明显,为什么你想创建类的多个实例,但我无法理解为什么你想要一个重复的类。此外,您只需复制并粘贴一个新的类名...