У меня есть класс А.
class A:
def __init__(self, ele):
self.ele = ele
Если я вызову A.fun(), я надеюсь, что его можно будет преобразовать в self.ele.fun().
Я не могу использовать наследование, потому что не знаю конструктора ele.
В ele много функций, поэтому я не могу написать каждую функцию отдельно.
Можете ли вы показать более полный пример? Если вы действительно пишете A.fun(), то вы ни разу не вызывали конструктор, поэтому ele даже не существует.






Боюсь, вы не сможете вызывать методы ele из объектов A Classes, если не унаследуете их. потому что у A нет методов. если вы не знаете имена методов по умолчанию и не создаете для них вызывающие объекты.
метод 1:
class Ele:
def fun(self):
print("this is fun")
class A:
def __init__(self, ele):
self.ele = ele
def fun(self):
self.ele.fun()
ele=Ele()
a = A(ele)
a.fun()
метод 2:
class Ele:
def fun(self):
print("this is fun")
class A(Ele):
def __init__(self):
pass
a = A()
a.fun()
Вы можете определить метод __getattr__ как обертку getattr для self.ele, чтобы вместо этого все доступы к неопределенным атрибутам откладывались на self.ele. Обратите внимание, что этот шаблон кода известен как определение прокси-объекта:
class A:
def __init__(self, ele):
self.ele = ele
def __getattr__(self, name):
return getattr(self.ele, name)
так что:
print(A('foo bar').split())
выходы:
['foo', 'bar']
Вы имеете в виду, что
A.fun()должен быть статическим методом? Тогда у вас нет ссылки наselfи вы не можете этого сделать.