所以我試圖動態地設置屬性到不同名稱的類,其中每個屬性對我的數據庫進行獨特的調用。但是,當我訪問屬性對象時,儘管在不同的列上查看了各自完全不同的值,但它們都返回相同的結果。下面是代碼:不同的功能,相同的結果
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