Все методы класса вызывают метод элемента

У меня есть класс А.

class A:
 def __init__(self, ele):
    self.ele = ele

Если я вызову A.fun(), я надеюсь, что его можно будет преобразовать в self.ele.fun().

Я не могу использовать наследование, потому что не знаю конструктора ele.

В ele много функций, поэтому я не могу написать каждую функцию отдельно.

Вы имеете в виду, что A.fun() должен быть статическим методом? Тогда у вас нет ссылки на self и вы не можете этого сделать.

Klaus D. 06.03.2024 05:48

Можете ли вы показать более полный пример? Если вы действительно пишете A.fun(), то вы ни разу не вызывали конструктор, поэтому ele даже не существует.

Silvio Mayolo 06.03.2024 05:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Боюсь, вы не сможете вызывать методы 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']

Демо: https://ideone.com/7H9tT5

Другие вопросы по теме

Похожие вопросы

Как упорядочивается атрибут RFECV `cv_results` scikit-learn?
Рисование ориентированной трехмерной ограничивающей рамки поверх изображения с использованием внешней матрицы Lidar_to_camera и матрицы camera_intrinsic с использованием opencv-python
Создать экспорт в формате CSV, загружаемый в Odoo
При использовании многопроцессорности в Python увеличение соотношения потребителей к производителям никогда не приводит к тому, что они успевают за работой
Получение IndexError при использовании рекурсии для написания метода BinarySearch
Python → Получить дочерние элементы ответа json
Как нарисовать движущуюся линию в качестве ползунка для сценария генератора видео сравнения изображений на Python с помощью FFmpeg
Как сохранить формат даты в Google Sheets при обновлении с помощью Python (gspread и pandas)
Объединить словарь списков в один список
Как вызвать пользовательское исключение внутри функции проверки пустого кадра данных pd?