2016-01-07 2 views
-1

Вот мой кодПочему я не могу вызвать функцию из отдельного класса? Python

# import all the modules 
from Fesnoria_Main import * 

import pygame 

# Setup 
# change window settings 
screen = pygame.display.set_mode((600, 600), pygame.RESIZABLE) 
pygame.display.set_caption('Fesnoria - An epic journey.') 

#define configuration variables here 
HERO_MOVE_SPEED = 20 # pixels per second 
MAP_FILENAME = 'resources/tmx/Fesnoria Town.tmx' 
MUSIC_FILENAME = "resources/music/Forest_Song.mp3" 

gamesetup = Main() 
gamesetup.run() 

Я хочу, чтобы вызвать функцию Run() внутри класса Main() в моем другом модуле питона Fesnoria_Main, который выглядит как этот

class Main(object): 
    def run(self): 
     print "start game" 

Но когда Я запустить сценарий, я получаю сообщение об ошибке

NameError: name 'Main' is not defined 

Но это явно определить, потому что я импортировал модуль в верхней части, а также в моем IDE он признает, что Main() является классом в модуле Fesnoria_Main

Итак, любые идеи о том, как я могу это исправить?

+2

Что происходит, когда вы пытаетесь импортировать только Main? 'от Fesnoria_Main import Main' – Nhor

+2

это просто догадка, но, возможно, вы не добавили модуль в пакеты __ init __.py в список __ all __? –

+0

За исключением частей 'pygame', он работает так, как ожидалось, он печатает« начать игру ». Вероятно, вы должны опубликовать минимальный, полный, проверяемый пример (http://stackoverflow.com/help/mcve). – skyking

ответ

1

Этот минимальный пример работает для меня:

Файлы:

  1. bla.py
  2. Fesnoria_Main.py содержание

Fesnoria_Main.py:

class Main(object): 
    def run(self): 
     print "start game" 

бла. ое содержание:

# import all the modules 
from Fesnoria_Main import * 

gamesetup = Main() 
gamesetup.run() 

Затем запустите его с:

python bla.py 

Печатается:

start game 

Так что я хотел бы попробовать начать с этим минимальным примером, а затем работать ваш путь назад, чтобы найти ваша ошибка.

Смежные вопросы