class MyClass:
"A simple example class"
i = 12345
def f(self):
return 'hello world'
Знакомые говорят что надо прописывать папку /home/user в path и делать import. Так ли это? Получается немного не удобно.. Может есть другие способы?
class MyClass:
"A simple example class"
i = 12345
def f(self):
return 'hello world'
offlineclass - плохое название для файла. переименуй хотя бы в my_class.py. Потом, если файл лежит в тоже директории что и вызвающий скрипт, то пишешь просто
Теперь я хочу из другого файла ( /home/user/script.py ) воспользоваться этим классом и вызвать функцию f().
import my_class
mc = my_class.MyClass()
mc.f()
offlineправду говорят, чтобы питон “видил” модули директории с ними должны быть прописаны в $PYTHON_PATH переменной окружения. Или в самом скрипте можно динамически добавлять:
Знакомые говорят что надо прописывать папку /home/user в path и делать import.
import sys
sys.path.append( "/path/to/my/module/directory/" )
#тут уже можно импортировать модули из "/path/to/my/module/directory/"
offlineИмпортируется и так. Просто оbject это базавый класс для new-style классов в python. На ранних этапах работы с питон об этом можно не задумываться.
Но тут же появился другой вопрос, а что за “object” появился в параметрах класса Foo? И почему без этого слова не импортируется класс?
offlineесли в подкаталоге, то ничего не надо добалять просто импорт меняется
И второй вопрос. А если файлы находятся в разных папках, например foo.py теперь лежит в subdirectory с именем “something”. Уже никак без добавления в path не обойтись?
import something.foo
[offline@jobber new]$ ls
foo.py script.py
[offline@jobber new]$ python script.py
Traceback (most recent call last):
File "script.py", line 1, in ?
import foo
File "/home/offline/pylons/new/foo.py", line 1
class Foo():
^
SyntaxError: invalid syntax
[offline@jobber new]$ ls
script.py something
[offline@jobber new]$ python script.py
Traceback (most recent call last):
File "script.py", line 1, in ?
import something.foo
ImportError: No module named something.foo
import sys
sys.path.append( "/path/to/my/module/directory/" )
import os
BASE_DIR = "required path"
os.chdir(BASE_DIR)
offlineскобки не надо писать
как видно из ошибки, не позволяет импортировать класс без “object”.