все. Надеюсь, мой заголовок правильный. Итак, у меня есть модуль, который выполняет метод, создавая их из всех, которые печатаются после точки. (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()")
Но, может быть, существует явно так