Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 14, 2011 21:13:24

ChinYan
От:
Зарегистрирован: 2011-12-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Из другого файла

Господа, только недавно стал изучать python.
Мне нужно что бы определение класса было в одном файле, а его экземпляр создавался и использовался в другом.
Файл класса:

class MyClass:
def f():
print("Hello world!")
Основной файл:
import abc
x = MyClass()
Но интерпретатор выдает ошибку:
x = MyClass()
NameError: name ‘MyClass’ is not defined
Причем dir(abc) выдает пустую строку.
Вот как заставить это все работать?
И еще вопрос. Как создать конструктор класса?



Офлайн

#2 Дек. 14, 2011 21:17:41

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Из другого файла

Кодовое слово - пространство имен (namespace)
1)

import abc
x = abc.MyClass()
2)
from abc import MyClass
x = MyClass()

Офлайн

#3 Дек. 14, 2011 21:27:33

ChinYan
От:
Зарегистрирован: 2011-12-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Из другого файла

на первые выдает:
AttributeError: ‘module’ object has no attribute ‘MyClass’
На второе - ImportError: cannot import name MyClass

Сдается мне, что он просто не находит файл abc.py хотя он лежит в той же папке, что и главный



Офлайн

#4 Дек. 14, 2011 21:45:45

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Из другого файла

У вас в коде косяк - f() - это метод, а вы ему self не передаете

upd:
abc - это модуль из стандартной поставки, и импортируется именно он, и у него нет MyClass ))
переименуйте в abc_test.py и в главном модуле измените имена.

Отредактировано (Дек. 14, 2011 21:56:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version