Python:将类的整个self传递给新类的init

Python:将类的整个self传递给新类的init,python,class,initialization,subclass,init,Python,Class,Initialization,Subclass,Init,我有一个班和一个子班,我想把这个班的整个自我传递给这个子班。我可以很容易地将self传递给新类,例如 class foo: def __init__(self, a, b): self.a = a self.b = b self.c = 'foo' def foo_method(self): print('a foo method') class bar(foo): def __init_

我有一个班和一个子班,我想把这个班的整个自我传递给这个子班。我可以很容易地将self传递给新类,例如

class foo:
    def __init__(self, a, b):
        self.a = a
        self.b = b
        self.c = 'foo'
        
    def foo_method(self):
        print('a foo method')

class bar(foo):
    def __init__(self, foo_object):
        self.a = foo_object.a
        self.b = foo_object.b
        self.c = foo_object.c
    
    def bar_method(self):
        print('a bar method')

foo_object = foo(a = 'a', b = 'b')
bar_object = bar(foo_object)

bar_object.a

有没有更简洁的方法来传递这些信息?比如:

class bar(foo):
    def __init__(self, foo_object):
        self = self.foo_object

更新:

谢谢,以下解决方案有效:


class bar(foo):

    def __init__(self, foo_object):
        self.__dict__ = foo_object.__dict__.copy()
    
    def bar_method(self):
        print('a bar method with ' + str(self.c))


我想你可以用它来做

    class bar(foo):
        def __init__(self):
            super(bar, self).__init__()
使用这段代码,您运行了子类的init函数

您尝试过内置库了吗

否则,我认为您可以轻松实现自己的
.copy()
方法,将值从旧对象复制到新对象。大概是这样的:

类MyObject:
a=无
def设置默认值(自身):
self.a=1
def副本(自身、旧):
如果类型(自身)=类型(旧):
self.\uuuuu dict\uuuuuuu=old.\uuuuuu dict\uuuuuuu.copy()
其他:
raise type错误('错误类型')
如果名称=“\uuuuu main\uuuuuuuu”:
obj_1=MyObject()
打印(obj_1.a)
对象1.设置默认值()
打印(obj_1.a)
obj_2=MyObject()
打印(obj_2.a)
obj_2.副本(obj_1)
打印(obj_2.a)
请注意,我添加了一个类型检查,以确保您复制的属性在其他情况下是存在的,但我认为只需
self.\uuu dict\uuu=old.\uu dict\uuu.copy()
就可以了,因为您可能会得到新对象中可能没有的属性


希望这有帮助

当您从“foo”继承“bar”时,不需要在bar中显式设置a、b、c。您可以使用super关键字从bar直接调用foo的构造函数。这样,您就可以在bar中使用foo的成员了。您可能已经知道这一点,但典型的子类通常不会将父类的实例作为参数。当然,在某些用例中,这是可取的,例如,但您应该考虑这对于您自己的场景是否真的是必要的。这一点很好。如果
bar
是一个完全不同的类,其中foo类作为参数传入,我想问题是一样的。谢谢你做了我需要的。