Python,如何将现有的父类对象转换为子类对象

问题描述 投票:1回答:1

***为了给出我想要执行以下操作的原因,我正在尝试包装第三方工具并对其进行更多处理。

我正在使用第三方工具,因此它返回一个对象。 (例如,类别为Person的对象,其中包含MANY属性)。

我想声明一个新类,例如Driver(Person)。其中包含Person类中的所有内容,以及更多。我不允许使用来修改Person类。

我已经有一个现有的Person对象(从第三方工具返回),如何将其转换为Driver对象?请不要通过初始化一个新的空Driver对象并将所有内容逐个复制到其中……在我的情况下,Person类中有30多个属性和属性,而Person类并不是我唯一需要执行的操作用。我必须做大约20堂课。这就是为什么除非别无选择,否则我不为每个课程从头开始一本一遍地复印。

class Person:
    def __init__(self):
        self._name = None

    @property
    def name(self):
        return self._name


class Driver(Person):
    def __init__(self):
        super().__init__()
        self._gender = None

    @property
    def gender(self):
        return self._gender

    def __str__(self):
        return f'{self.name} {self.gender}'

给出Person的实例,将其转换为Driver。但是想象一下,在两个类中都有更多的属性。目前,我基本上只是将Person实例作为属性加载到新的Driver实例中。但是我认为必须有一种更聪明的方法来做到这一点。

python types casting
1个回答
1
投票

[基本上,一个类的所有属性都位于魔术__dict__属性内。类似于字典的对象包含为对象本身定义的所有属性。

因此,一次复制all属性的方法是将__dict__属性从一个类复制到一个方法内部或这样的实例中的另一个:

a = Person()
b = Driver()
b.__dict__.update(a.__dict__)

[请注意,如果重复的属性将被覆盖,所以要小心

© www.soinside.com 2019 - 2024. All rights reserved.