Python 3.x 如何将类实例中的所有属性和函数复制到python中的另一个类?
假设我们有一个未知类的实例Python 3.x 如何将类实例中的所有属性和函数复制到python中的另一个类?,python-3.x,class,inheritance,Python 3.x,Class,Inheritance,假设我们有一个未知类的实例 parent=Unknown() 这个对象不一定是特定类的实例(它可能是任何类的实例,但我知道潜在类的名称)。我想定义一个新类来继承该对象的属性和函数。因为我不知道这个实例的类是什么,所以我不能使用python类继承。我知道如果父类已知,我们可以使用以下代码: class Child(Unknown) def __init__(self): super().__init__() 但是在我的例子中,我不知道什么是父类,我只有它的一个实例。
parent=Unknown()
这个对象不一定是特定类的实例(它可能是任何类的实例,但我知道潜在类的名称)。我想定义一个新类来继承该对象的属性和函数。因为我不知道这个实例的类是什么,所以我不能使用python类继承。我知道如果父类已知,我们可以使用以下代码:
class Child(Unknown)
def __init__(self):
super().__init__()
但是在我的例子中,我不知道什么是父类,我只有它的一个实例。所以我想做这样一件事:
class Child()
def __init__(self, parent):
super().__init__()
有人有想法吗?这将把类(
parent
)实例的每个属性设置为名为Child
的类中的同一命名属性。请注意,它只会更改类dict
中的属性
child = Child()
for att, value in parent.__dict__.items():
setattr(child, att, value)
您可以使用此选项更改几乎所有属性(\uuuuuwakref\uuuu
),例如,将不会更改):
但是,您也将更改变量的类,即
子类。
这将把类的实例(父类
)的每个属性设置为名为子类
的类中相同的命名属性。请注意,它只会更改类dict
中的属性
child = Child()
for att, value in parent.__dict__.items():
setattr(child, att, value)
您可以使用此选项更改几乎所有属性(\uuuuuwakref\uuuu
),例如,将不会更改):
但是,您也将更改变量的类,即
子类。\uuuuu class\uuuu==Test
谢谢您的解决方案。第一个答案只复制属性(类变量而不是类方法)。第二个答案复制了“a”中的所有想法,并删除了Test2属性。它甚至将对象“child”的类从“Test2”更改为“Test”,这不是我想要的。第一个答案只复制属性(类变量而不是类方法)。第二个答案复制了“a”中的所有想法,并删除了Test2属性。它甚至将对象“child”的类从“Test2”更改为“Test”,这不是我想要的。