***为了说明为什么要执行以下操作,我试图包装第三方工具并对其进行更多处理。
我正在使用第三方工具,因此它返回一个对象。(例如,class的对象Person
,其中包含许多属性)。
我想声明一个新类,例如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实例中。但是我认为必须有一种更聪明的方法来做到这一点。
基本上,一个类的所有属性都位于magic__dict__
属性内。类似于字典的对象包含为对象本身定义的所有属性。
因此,一次复制所有属性的方法是将__dict__
属性从一个类复制到方法内部或实例中的另一个:
a = Person()
b = Driver()
b.__dict__.update(a.__dict__)
请注意,如果重复的属性将被覆盖,所以要小心
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句