***为了给出我想要执行以下操作的原因,我正在尝试包装第三方工具并对其进行更多处理。
我正在使用第三方工具,因此它返回一个对象。 (例如,类别为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__
属性内。类似于字典的对象包含为对象本身定义的所有属性。
因此,一次复制all属性的方法是将__dict__
属性从一个类复制到一个方法内部或这样的实例中的另一个:
a = Person()
b = Driver()
b.__dict__.update(a.__dict__)
[请注意,如果重复的属性将被覆盖,所以要小心