【发布时间】:2017-03-06 10:26:23
【问题描述】:
因此,我尝试将属性动态设置为具有不同名称的类,其中每个属性都对我的数据库进行唯一调用。但是,当我访问属性对象时,尽管查找具有完全不同值的不同列,但它们都返回相同的结果。代码如下:
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的值在哪里设置? -
x是一个简单的对象,具有单个name属性,该属性具有预分配的字符串。我在代码的另一部分构建这些对象。configs只是一个包含 3 个或更多这些对象的列表。 -
所以您尝试设置一个属性,称为
x.name的值,在访问数据库时从数据库读取和写入?像一个活跃的记录? -
不是真的,我正在尝试创建一个属性来调用数据库并在访问时返回一个值,我还可以使用简单的赋值语法更新数据库。
-
这不是我说的吗?