使用继承类的实例创建新类

时间:2018-03-21 13:34:57

标签: python oop inheritance

我想知道如何从函数中获取对象并将其及其所有属性放入另一个对象中。

R

限制:

我无法改变class Something: def create(self): print('Creating') class Foo(Something): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def do_something(self): print('Do somthing') def bar(): # Can not change this function return Something() s = bar() s.create() # 'Creating' -- I want to do this -- f = Foo(s) f.create() f.do_something() 。我需要能够访问bar()中的所有Something方法和属性。我希望远离表单构成,以便我可以直接致电Foo(而不是Foo.create())。

2 个答案:

答案 0 :(得分:0)

__init__(self, *args, **kwargs)更改为__init__(self, _, *args, **kwargs):

>>> Foo(Something()).create()
Creating
>>> Foo(Something()).do_something()
Do somthing

老实说,我在这里看不到问题。或者,为什么要在创建Something的实例时提供Foo的实例,但是你去了。

答案 1 :(得分:-1)

我提出了这个解决方案,我不太满意,因为它需要我两次调用该函数。

class Something:
    def create(self):
        print('Creating')

class Foo:
    def __init__(self, something):
        self.sometthing = something

    def __getattr__(self, attr):
        return getattr(self.obj, attr)

    @some_special_decorator
    def create(self):
        return self.something.create()

    def do_something(self):
        print('Do somthing')


def bar():
    # Can not change this function
    return Something()

s = bar()

s.create() # 'Creating'

f = Foo(s)

f.create()
f.do_something()