그래서 각 속성이 내 데이터베이스에 고유 한 호출을하는 다른 이름을 가진 클래스에 속성을 동적으로 설정하려고합니다. 그러나 속성 객체에 액세스 할 때 모두 다른 값을 가진 다른 열을 각각 조회하더라도 동일한 결과를 반환합니다. 여기서 코드 :다른 기능, 동일한 결과
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