Допускаю, что по не незнанию пытаюсь решить проблему не с той стороны

Возникла задача, по созданию динамического количества методов класса
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)
Но обнаружил, что по адресу в памяти все добавленные методы фактически являются одним и тем же объектом и в итоге значение естественно записывается только с последней итерации.
Как правильно организовать такое, чтобы это были действительно независимые функции-методы, каждый со своим именем и адресом в памяти?
Заранее спасибо за любые советы.