【发布时间】:2020-07-10 05:53:26
【问题描述】:
*** 为了说明我为什么要执行以下操作,我正在尝试包装第三方工具并用它做更多事情。
我正在使用第三方工具,它会返回一个对象作为结果。 (例如,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 实例中。但我认为必须有一个更聪明的方法来做到这一点。
【问题讨论】:
-
您如何知道作为驱动程序一部分但人员尚未提供的所有信息的值?
-
你可以实现一个类方法......
-
检查here
-
没有必要。您可以创建一个从人员实例创建驱动程序的类函数
-
考虑您是否真的需要继承,而不是将给定的
Person对象作为Driver实例的属性。