.txt 파일에서 속성 Monster
이라는 클래스를 사용 중이며 __init__
은 .txt 파일을 반복합니다. iterates 괜찮아요, 내 문제는 그 전에 self.
가지고 변수를 얻을 수 없다는 것입니다. Monsterfind()
은 단순히 괴물 .txt 파일에 대한 경로를 찾고 변수가 잘 인쇄되므로 문제가 아님을 알고 있습니다.얻기 자기는 내가이이 형식으로 .txt 파일에서 각 몬스터의 통계를 얻을 수 있도록 할 계획 D & D.에 대한 전투 도우미를 만들고있어
class Monster:
def __init__(self, monster):
"""Checks if the monster is defined in the directory.
If it is, sets class attributes to be the monster's as decided in its .txt file"""
self.name = monster.capitalize()
monstercheck = self.monsterfind()
if monstercheck != Fales:
monsterchck = open(monstercheck, 'r')
print monstercheck.next() # Print the _Name of Monsters, so it does not execute
for stat in monstercheck:
print 'self.{}'.format(stat) # This is to check it has the correct .txt file
eval('self.{}'.format(stat))
monstercheck.close()
print 'Monster loaded'
else: # if unfound
print '{} not found, add it?'.format(self.name)
if raw_input('Y/N\n').capitalize() == 'Y':
self.addmonster() # Function that just makes a new file
else:
self.name = 'UNKNOWN'
그냥 말한다 : 이것이 내가 클래스를 사용하고 처음으로 self.AC = 5
SyntaxError: invalid syntax @ the equals sign
내 클래스 또는 내 __init__
에 문제가 중요하지 않은 경우에도이 있으면 말씀해주십시오. 파이썬은 당신이 원하는 않는, setattr()
있다 -
eval()
(또는
exec
)가 필요하지 않습니다 사전
구문 분석이 너무 까다로울 수는 없습니다. 'pre_stat, pre_value = line.split ('=')''stat = pre_stat.strip()'과'value = ast.literal_eval (pre_value)'가 뒤 따르지만'json'은 아마 더 쉬울 것입니다. – mgilson
@mgilson 아니요. 그러나 입력 형식이 중요하지 않으면 기존 도구를 사용하는 것이 더 쉬울 수도 있습니다. –
정말 고마워요! 더 궁금한 점이 있지만, 익숙하지 않은 JSON에 관한 좋은 문서가 어디에 있는가. 형식은 중요하지 않으므로 JSON을 살펴 보겠습니다. 또한, 수동으로 구문 분석 할 필요가없는 것 외에 다른 주요 장점은 무엇입니까? 도와 주셔서 다시 한 번 감사드립니다! – Timidger