Python динамически генерирует и выполняет динамический объект и функцию - PullRequest
0 голосов
/ 31 октября 2019

все. Надеюсь, мой заголовок правильный. Итак, у меня есть модуль, который выполняет метод, создавая их из всех, которые печатаются после точки. (vk.bla.bla ()).

class VkApiMethod(object):
"""
>>> vk = VkApiMethod(...)
>>> vk.wall.getById(posts='...')
или
>>> vk.wall.get_by_id(posts='...')
"""

  __slots__ = ('_vk', '_method')

  def __init__(self, vk, method=None):
      self._vk = vk
      self._method = method

  def __getattr__(self, method):
      if '_' in method:
          m = method.split('_')
          method = m[0] + ''.join(i.title() for i in m[1:])

      return VkApiMethod(
          self._vk,
          (self._method + '.' if self._method else '') + method
      )

  def __call__(self, **kwargs):
      for k, v in six.iteritems(kwargs):
          if isinstance(v, (list, tuple)):
              kwargs[k] = ','.join(str(x) for x in v)

      return self._vk.method(self._method, kwargs)

Я думаю, что я могу добиться этого с помощью exec () или eval ().

def some_func(type):
      exec("vk." + type + ".addAlbum()")

Но, может быть, существует явно так

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