Лучший питонический способ организовать большое количество методов с похожими именами - PullRequest
0 голосов
/ 04 ноября 2019

Python 3.6

Я настраиваю интерфейс с устройством, доступным через остальные API. Есть многократные вызовы с похожими именами, которые станут длинными, и на самом деле не имеет смысла делать более длинные имена только для того, чтобы запоминать больше вещей для использования пакета. Я ищу элегантный питонический способ реализовать его как для простоты использования, так и для обслуживания. В идеале мне бы хотелось, чтобы это был способ организации функций (и возможность повторять имена функций) без потери доступа к функциям более низкого уровня. Внутренние классы выглядят грязно и должны быть созданы с родителем, чтобы работать, предпочтительно я бы хотел избежать создания дополнительных классов. внутренние классы с @classmethods не имеют доступа к переменным экземпляра внешнего класса.

Должен быть лучший способ. и есть ли способ разделить это на несколько файлов.

Я проверил следующие ссылки, которые выглядели похожими, но я не думаю, что они действительно соответствуют тому, что я делаю:

организация большого объекта python

https://easyaspython.com/mixins-for-fun-and-profit-cb9962760556

class BigClass:

    def __enter__(self):
        #create session
        return self

    def __exit__(self, type, value, traceback):
        #Close session
        pass

    def sendApi(**kwargs):
        print(kwargs)

    #here is where I need some help

    class Cat1:
        def __init__(parent):
            self.parent = parent
        def dosomething(self):
            #define kwargs
            self.parent.sendApi(**kwargs)

    class Cat2:
        def __init__(parent):
            self.parent = parent
        def dosomething(self):
            #define kwargs
            self.parent.sendApi(**kwargs)

    def __init__():
        self.cat1 = Cat1(self)
        self.cat2 = Cat2(self)

with BigClass() as myInstance:
    myInstance.cat1.dosomething()
    myInstance.cat2.dosomething()

Так что это работает, чтобы сделать вызовы, но

1 - его создание большого количестваклассы (более 50 кошек на 1 BigClass) и

2 - файл для BigClass становится очень длинным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...