如何复制python类?
copy的deepcopy不复制类别:
>>> class A(object):
>>> ARG = 1
>>> B = deepcopy(A)
>>> A().ARG
>>> 1
>>> B().ARG
>>> 1
>>> A.ARG = 2
>>> B().ARG
>>> 2
是唯一的办法吗?
B(A):
pass
I159 asked 2020-06-24T11:30:47Z
8个解决方案
45 votes
通常,继承是正确的方法,正如其他发布者已经指出的那样。
但是,如果您确实想重新创建具有不同名称且没有继承的相同类型,则可以这样进行:
class B(object):
x = 3
CopyOfB = type('CopyOfB', B.__bases__, dict(B.__dict__))
b = B()
cob = CopyOfB()
print b.x # Prints '3'
print cob.x # Prints '3'
b.x = 2
cob.x = 4
print b.x # Prints '2'