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



***为了说明我想做以下事情的原因,我正在尝试包装第三方工具并用它做更多的事情。

我使用的是第三方工具,它会返回一个对象。(例如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实例中。但我认为必须有一个更聪明的方法来做到这一点。

基本上,类中的所有属性都位于神奇的__dict__属性中。这个类似字典的对象包含为对象本身定义的所有属性。

因此,一次复制所有属性的方法是将__dict__属性从一个类复制到另一个类,无论是在方法内部还是从这样的实例中:

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

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

最新更新