gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:44:18 35 4
gpt4 key购买 nike

*** 为了给出我想要执行以下操作的原因,我正在尝试包装第三方工具并使用它做更多事情。

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

我想声明一个新类,例如司机(人)。其中包含 Person 类中的所有内容,等等。我不允许修改Person 类。

我已经有一个Person 对象(从第三方工具返回),如何将它转换成一个Driver 对象?请不要通过初始化一个新的空 Driver 对象并将所有内容一一复制到其中...在我的例子中,Person 类中有 30 多个属性,Person 类不是唯一的类我需要这样做。我必须用大约 20 节课来做这件事。这就是为什么我除非没有其他办法,否则每个类(class)都从头开始复制是不切实际的。

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__)

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

关于Python,如何将现有的父类对象转换为子类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60920784/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com