LINUX.ORG.RU

Как сделать вложенные в класс функции?

 


0

1

Есть класс CoolClass(object)

Есть две группы функций Get и Post, использующие обе __init__ объект класса CoolClass

Как сделать такую конструкцию?

cc = CoolClass(args)
cc.Post.cool_api_function()
★★★★★

Последнее исправление: steemandlinux (всего исправлений: 1)

Так и сделать, объяви в CoolClass.__init__ вложенный класс и присвой его self.Post.

slovazap ★★★★★
()
Ответ на: комментарий от MyTrooName

Для избежания лишних ошибок. Они совершенно несовместимые и надо запоминать где какой:

https://support.cryptopia.co.nz/csm?id=kb_article&sys_id=40e9c310dbf91300...

https://support.cryptopia.co.nz/csm?id=kb_article&sys_id=a75703dcdbb91300...

Кстати оказывается до меня запилили несколько вариантов, но это какая-то херота:

https://github.com/thebotguys/cryptopia-api-python/blob/master/cryptopia_api.py

структура каталогов неправильная, конкатенация плюсиками, исключения через жопу, идея с api_query не нравится, я хочу передать имя функции в URL. Это официальный гайд переделанный в класс.

steemandlinux ★★★★★
() автор топика
Ответ на: комментарий от MyTrooName

Хотя зачем эти вложения, я же в любом случае должен ссылку знать. Тем более это будет в классе описано.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)

создай классы Get и Post, и передевай в их __init__ экземпляр класса CoolClass

provaton ★★★★★
()

Такое пойдёт для продакшена?

    def _query(self, arg=None):
        self.req = arg
        callframe = inspect.getouterframes(inspect.currentframe(), 2)[1][3]
        self.url = "https://www.cryptopia.co.nz/Api/{}".format(callframe)
        
        if type(self.req) is dict:
            headers, post_data = self._private()
            method = 'POST'
            url = self.url 
        elif type(self.req) is str:
            headers = {'Connection': 'close'}
            post_data = None
            method = 'GET'
            url = "{}/{}".format(self.url, self.req)
        elif self.req is None:
            headers = {'Connection': 'close'}
            post_data = None
            method = 'GET'
            url = self.url
        else:
            raise self.GlobalError("API request error")
steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 2)
Ответ на: комментарий от steemandlinux

Как по мне - не очень, у тебя неявная зависимость типа запроса от типа параметров, я бы сделал явно тип запроса, как выше уже предлагали.

loz ★★★★★
()
Ответ на: комментарий от loz

Это про «создай классы Get и Post, и передевай в их __init__ экземпляр класса CoolClass»?

steemandlinux ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.