Форум сайта python.su
0
Доброго времени суток.
Допускаю, что по не незнанию пытаюсь решить проблему не с той стороны 
Возникла задача, по созданию динамического количества методов класса
def add_dynamics(cls): cur = DbProvider.get_cursor(dict_cursor=True) cur.execute("""SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_db_name' AND TABLE_NAME = 'synchro_session';""") res = cur.fetchall() column_names = [c['COLUMN_NAME'] for c in res] def fieldmethod(self): cur = DbProvider.get_cursor(dict_cursor=True) cmd = "SELECT `{}` FROM `synchro_session` WHERE `city`='{}';".format(fieldmethod.__name__, self.office_id) cur.execute(cmd) return cur.fetchone()[fieldmethod.__name__] for name in column_names: # создаю методы и аттачу к классу f = fieldmethod f.__doc__ = "docstring for {}".format(name) f.__name__ = name setattr(cls, f.__name__, f) class SynchroSession(object): def __init__(self, office_id): add_dynamics(SynchroSession)
Отредактировано Vort (Окт. 21, 2016 15:03:51)
Офлайн
568
Сделайте функцию, которая возвращает другую функцию, тогда результат функции каждый раз будет новая функция. Вызывайте эту функцию в цикле.
Офлайн
0
FishHookБольшое спасибо, получилось именно то, что хотел.
Сделайте функцию, которая возвращает другую функцию, тогда результат функции каждый раз будет новая функция. Вызывайте эту функцию в цикле.
Офлайн