所以我试图动态地设置属性到不同名称的类,其中每个属性对我的数据库进行独特的调用。但是,当我访问属性对象时,尽管在不同的列上查看了各自完全不同的值,但它们都返回相同的结果。下面是代码:不同的功能,相同的结果
class Configs:
def __init__(self, guild_id):
self.guild_id = guild_id
for x in configs:
def fget(self):
return cur.execute(f'SELECT {x.name} FROM configs WHERE guild_id = ?', (self.guild_id,)).fetchone()[0], x.name
def fset(self, value):
cur.execute(f'UPDATE configs SET {x.name} = ? WHERE guild_id = ?', (value, self.guild_id))
con.commit()
setattr(Configs, x.name, property(fget, fset))
的CONFIGS变量是对象的列表,其中每个对象具有一个name
属性,它指向一个字符串。结果始终是configs数组的最后一个元素产生的结果,我怀疑这是因为x.name
用于调用,一旦for循环完成,x仍然是数组的最后一个元素。
什么是'x'?它是一个'Configs'吗?你在哪里设置'x.name'的值? – khelwood
'x'是一个简单的对象,带有一个'name'属性,它有一个预先分配给它的字符串。我在代码的另一部分构建这些对象。 'configs'只是一个包含3个或更多这些对象的列表。 – Exa
所以你试图设置一个属性,称为“x.name”的值,它在访问数据库时从数据库中读取和写入?像一个活跃的记录? – khelwood