pygame을 사용하여 Python으로 작성된 내 드로잉 프로그램의 사용자가 선택한 객체의 이름을 바꾼 다음 해당 이름으로 실시간 인터프리터를 통해 액세스 할 수있게하려고합니다. 다음은 모든 드로어 블 객체의 기본 클래스의 메소드입니다. 이 코드를 실행하면 오류가 발생하지 않지만 새 이름을 사용하여 개체에 액세스하려고하면 해당 이름의 변수가 정의되지 않았다고 말합니다. 이것이 어떤 이유 일 수 있습니까? 나는 exec
함수가 전역 변수의 자신의 conecpt을 가지고 있기 때문에 그 작동합니다 생각하지 않습니다eval을 사용하여 전역 변수에서 새 변수 만들기
def rename(self,newName):
"""
Gives this drawable a new name by which the user my reference it in
code
"""
#Create a new variable in the global scope
command = 'global ' + newName + '\n'
#Tie it to me
command += newName + ' = self' + '\n'
#If I already had a name, I'll remove this reference
if self.name != None:
command += 'del ' + self.name
#Execute the command
exec(command)
#Make this adjustment internally
self.name = newName
이것은 나를 위해 일하는 것 같습니다. 도와 줘서 고마워, 로드리고! – hedgehogrider
비록 exec가 작동하지 않는 이유는 아직도 이해하지 못합니다. exec (command, globals())에서도 작동하지 않았습니다. 이 문건은 내가 읽을 수있는 모든 문건입니까? – hedgehogrider
Hmmmm, 일부 테스트 후에 다른 전역 변수를 사용하여'exec'에 대해 잘못된 것처럼 보입니다. 실제로, 어떤 간단한 경우는 저에게 효과적이었습니다 ...하지만 내게 충격을주는 것은 여러분이 삭제하기 전에''global '+ self.name''을 추가하지 않고 실패하지 않는다는 것입니다. 그래서 추측 컨대 당신이 그것을 삽입 한 직후 같은 이름! – rodrigo