Frage

Why am i getting this attribute error?

class GameState(object):
  """Keeps track game state variables"""
  def __init__(self, convo_flag=0, characters_talked_to=0, convo_log=(None)):
    self.convo_flag = convo_flag
    self.characters_talked_to = characters_talked_to
    self.convo_log = convo_log

def welcome_screen():
  global LAST_NAME
  global BULLY
  global DAY

  raw_input(messages.WELCOME)

  LAST_NAME = raw_input(messages.LAST_NAME)
  BULLY = characters.random_character(cclass='Camper', gender='m')

  print 'Your name is Pickett %s' % LAST_NAME

  messages.print_messages([
    messages.EXPLANATION,
    messages.BUS_LOADING,
    messages.CRACK,
    messages.GAME_KID_LOST])

  return week_one(DAY)

def week_one(day):
  if day == 1:
    messages.print_messages(messages.WEEK_ONE[day])
    campers = characters.random_character_sample(cclass='Camper', count=5)
    people_outside_theater = campers + [characters.TROID]

    while GameState.characters_talked_to != 3:

I dont get why im getting this attribute error, i totally declared it in that constructor, is there something i am missing were i need to declare it outside the constructor? This is really racking my brain.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pickett.py", line 44, in welcome_screen
    return week_one(DAY)
  File "pickett.py", line 52, in week_one
    while GameState.characters_talked_to != 3:
AttributeError: type object 'GameState' has no attribute 'characters_talked_to'
War es hilfreich?

Lösung

You need to create an instance in order you use your class like this:

gameState = GameState()
while gameState.characters_talked_to != 3:

In your code you were trying to access class-level attribute which is not defined in your class.

Andere Tipps

Your __init__ function sets characters_talked_to on self, which is an instance of GameState.

You did not set it on GameState, which is a class.

Neither did you create any instances of GameState, so in any case __init__ is never called by your program.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top