Например у меня есть что-то вроде этого:Перегрузки и обертывание метод поля родительского класса в Python
class A(object):
def __init__(self):
pass
def foo(self, a, b, c):
return a + b + c
class B(object):
def __init__(self):
self.b = A()
def wrapper_func(func):
def wrapper(self, *args, **kwargs):
return func(self, a=3, *args, **kwargs)
return wrapper
class C(B):
def __init__(self):
pass
@wrapper_func
def ???
Можно ли как некоторые перегрузки, а затем оберните метод foo
поля родительского B
класса в Python без наследования от класса A
? Мне нужна оболочка, потому что у меня есть разные методы с одинаковыми аргументами, но в то же время мне приходится сохранять исходные методы класса B native (помимо перегрузки).
Так что способ вызова из обернутого метод будет таким, как 'c.bar (1, 2, 3)', но мне нужно то же имя вызова, что и 'cbfoo (1, 2, 3)'. Но я думаю, это невозможно ...? – NULL
Почему 'c.b.foo (1, 2, 3)'? Это вызовет только метод 'foo'' A' –
Да, в основном это вызовет метод 'foo'' A', но я имею в виду перегрузку и упаковку, например 'def b.foo (self): ...' , для вызова того же 'cbfoo()' вместо другого имени, как 'c.bar()'. И это невозможно, я думаю? – NULL