0
문자열 이름을 변수 이름으로 사용하는 것은 가능하지 않습니다. 나는 기본적으로 프로그램이 인용 부호 안에있는 것이 내가 참조하기를 원하는 객체의 이름이라는 것을 이해하기를 원한다. 다음과 같이하고 싶습니다.문자열을 파이썬에서 변수로 형변환
str = "modname"
import var(str)
var()는 허구의 기능입니다. str() 또는 int()를 사용하는 방식으로 사용하고 있습니다. "왜?"라고 물을지도 모른다.
class player:
__init___():
attributes = [ "hp", "attack", "defense" ]
for x in range(0, len(self.attributes) ]:
self.var(attributes[x]) = var(attributes[x] + "()")
(이미 from stats import *
같은 것을했던 가정) :이 같은 뭔가를 할 수 있도록이다. 그러나 실제 보상은 다음과 같이 할 수있는 능력입니다.
for x in range(0, len(self.attributes)):
self.var(attributes[x]).modAttr(-5)
print self.var(attributes[x]).magnitude
이게 가능합니까? 이 일을하고 싶다는 것이 완전히 터무니 없는가? 아니면 다른 작업을 수행하는 데 더 많은 방법이 있습니까?
의 중복 가능성 [동적 while 루프를 통해 파이썬에서 변수를 만들 수 있습니까?] (http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-in -python-via-a-while-loop) : dict 사용 – fredtantini
약간 도움이 될 것 같지만'attributes = { 'hp': hp, 'attack'과 같은 사전을 만드는 것은 어리석은 일이 아닙니다. 공격}'take_off_the_quote_marks ('hp')'라고 말할 수있는 방법이 있어야 할 때? (나는 이것이 중복 된 것으로 생각하지 않는다.) –
* "이것이 가능합니까?"* 예, getattr과 setattr이 그 것이다. * "이 일을하고 싶다면 완전히 불합리한가?" 정확하게, 당신이하려고하는 것이 명확하지 않습니다. 당신의'player .__ init__'는'NameError'를 포함하고 있으며, 속성에 자신을 호출하려고 시도하는 것처럼 보입니다. 또한 인덱스 x를 왜 귀찮게합니까? 'attr 속성 :'은 훨씬 더 읽기 쉽습니다. – jonrsharpe