是否有可能在一个类中使用单个更新方法,该方法将变量作为要更新的类变量名称的输入。
例如。我有一个模仿mysql表的类,我想要一个通用的更新函数来同时更新对象和mysql表
但是很明显,最后一行对于更新对象无效,有没有办法可以做到这一点? 还是每个元素都需要一个函数。
class MyClass(object):
def __init__(self, a, b, c, db_id):
self.a = a
self.b = b
self.c = c
self.db_id = db_id
def update_field(self, field, value, cnx):
update_query = "update my_table set %s = %s where id = %s"
cursor = cnx.cursor(buffered=True)
cursor.execute(update_query, (field, value, self.db_id))
**self.field = value**
谢谢
答案 0 :(得分:4)
您可以使用setattr
来基于其字符串名称来设置属性,即:
def update_field(self, field, value, cnx):
update_query = "update my_table set %s = %s where id = %s"
cursor = cnx.cursor(buffered=True)
cursor.execute(update_query, (field, value, self.db_id))
setattr(self, field, value)
第setattr(self, field, value)
行将field
的{{1}}属性的值设置为self
。