首页 > 解决方案 > 如何将对象的类扩展到子类?

问题描述

我有aclass的实例A,我想让它也成为 class 的实例B(继承自A)。

我已经尝试过了,但没有达到预期的效果:

class A:
    def __init__(self):
        self.a = 1

class B(A):
    def __init__(self):
        self.b = 2

a = A()
isinstance(a, A)   # True
B.__init__(a)
isinstance(a, B)   # False, I wished it was True...

我已经看到了这个答案,但我认为我的问题更笼统:这里只有方法 fromB将适用于a,但我想a成为 的完整实例B也具有成员变量等(好像a是直接创建的作为 的一个实例B,但继承A的状态与 ) 完全相同a

我怎样才能做到这一点??如有必要,我不介意创建一个新实例,只要我最终可以恢复完全相同的状态即可。

编辑:我也看到了这个问题的答案,但他们要么只创建一个新实例B并从中检索一个字段a(这将很难扩展到A具有许多属性的复杂类),要么只是设置a.__class__ = B 不创建B.

标签: pythoninstance

解决方案


推荐阅读