如何复制python类?

发布于 2021-01-29 15:06:03

deepcopycopy不会复制一个类:

>>> class A(object):
>>>     ARG = 1

>>> B = deepcopy(A)

>>> A().ARG
>>> 1

>>> B().ARG
>>> 1

>>> A.ARG = 2

>>> B().ARG
>>> 2

是唯一的办法吗?

B(A):
    pass
关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    通常,继承是正确的方法,正如其他发布者已经指出的那样。

    但是,如果您确实想重新创建具有不同名称且没有继承的相同类型,则可以这样进行:

    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'
    print cob.x # Prints '4'
    

    您必须注意可变属性值:

    class C(object):
        x = []
    
    CopyOfC = type('CopyOfC', C.__bases__, dict(C.__dict__))
    
    c = C()
    coc = CopyOfC()
    
    c.x.append(1)
    coc.x.append(2)
    
    print c.x   # Prints '[1, 2]' (!)
    print coc.x # Prints '[1, 2]' (!)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看