2013-12-16 4 views
0

Да, этот вопрос задан раньше. Нет, это не отвечало на мой вопрос удовлетворительно. Итак, я сначала создаю программу Giraffe на Python (не спрашиваю), и я пытаюсь заставить пользователя назвать жирафа.Вызов функции из другого файла в Python

Мои файлы находятся в одной упаковке под названием code. В файле Main_Code функция createGiraffe вызывается от code.Various_Functions. Вот мой код.

import code 
print("Welcome to The Animal Kingdom.") 
userGiraffe = code.Various_Functions.createGiraffe() 

И код в code.Giraffes:

import code 
def createGiraffe(): 
    print("Name your giraffe.") 
    GiraffeName = input() 
    return GiraffeName 

Однако, когда я бегу Main_Code, это дает мне эту ошибку:

Traceback (most recent call last): 
    File "C:\Users\Jonathan\Documents\Aptana Studio 3 Workspace\The Animal Kingdom\src\code\Main_Code.py", line 3, in <module> 
    userGiraffe = code.Giraffes.Giraffes.createGiraffe() 
AttributeError: 'module' object has no attribute 'Giraffes' 

Как это исправить? Я считаю, что я сделал все по книге. Все они используют один и тот же пакет, поэтому я могу вызвать функцию, я вызываю ее из нужного места, а функция не имеет синтаксических ошибок. Может кто-нибудь помочь с этим?

+0

Почему код в traceback отличается от кода, который вы указали в вашем запросе? Один из них - «code.Various_Functions.createGiraffe()», другой - «code.Giraffes.Giraffes.createGiraffe()». И почему бы не просто «code.Giraffes.createGiraffe()»? – jonrsharpe

+0

Да, это был беспорядок. Я скопировал неправильную ошибку. След должен быть code.Various_Functions.createGiraffe(), который создает такую ​​же точную ошибку. –

ответ

2

ли

import code.Giraffes 

перед выполнением обижая линии:

userGiraffe = code.Giraffes.Giraffes.createGiraffe() 
+0

Не следует ли импортировать «код» для этой работы? Или мне нужно отдельно импортировать Giraffe? –

+0

Вам нужно импортировать подмодули отдельно. Попробуйте в IDLE: 'import os'' os.path.join (" this "," should not "," work ")', затем 'import os.path' и' os.path.join ("This", «должен», «работать») ' –

+0

Я вижу. Кроме того, это была ошибка с ошибкой. Я скопировал ошибку, прежде чем я изменил ее на Different_Functions (что делает ту же ошибку). –

0

При вызове функции, как:

userGiraffe = code.Giraffes.Giraffes.createGiraffe() 

это означает, что у вас есть проект в реж code с внутренней директории Giraffes и модуль Giraffes с функцией func createGiraffe. Это ваше исключение?

+0

«код» - это мой пакет. В нем находится файл «Жирафы» с классом «Жирафы» с функцией «createGiraffe». –

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