我想知道如何从函数中获取对象并将其及其所有属性放入另一个对象中。
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()
)。
答案 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()