romankrv
			  Дек. 14, 2008 01:19:13
		 	 
			
				Здравствуйте
Небольшой вопрос по файлу __init__.py:
В каких случаях и почему нужено что бы код был в __init__.py так как в большенстве документации говорится что этот файл нужет индентификации каталога а о втором его предназначении мало сказано.
Спасибо
			
		 
		
			
			  slav0nic
			  Дек. 14, 2008 02:47:02
		 	 
			
				когда при импорте пакета, необходимо произвести какие-то действия: инициализация чего-то, задание __all__  (который юзается при import *)
			
		 
		
			
			  crchemist
			  Дек. 14, 2008 17:45:32
		 	 
			
				[crchemist@test tmp]$ cat pack/__init__.py
a = 10
[crchemist@test tmp]$ python
Python 2.5.2 (r252:60911, Jul  5 2008, 03:54:54)
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pack
>>> pack.a
10
>>> from pack import a
>>> a
10
>>>
 
			 
		 
		
			
			  balu
			  Дек. 15, 2008 08:24:02
		 	 
			
				Фактически это конструктор  объекта
			
		 
		
			
			  Андрей Светлов
			  Дек. 15, 2008 12:39:57
		 	 
			
				balu
На самом деле slav0nic правильно ответил - на уровне заданного вопроса.
А о том, чем является __init__.py фактически, можно долго и интересно разговаривать. Затронув тему, чем является модуль в Питоне вообще.
Например о том, что модуль не обязательно должен быть в sys.path. 
Есть import hooks.
При этом не всегда стоит добавлять в sys.modules то, что выдал import hook.
Иногда полезны “анонимные модули” - на прошлой неделе опять потребовались.
И т.д.
Вообще-то для меня модуль - это объект, который позволяет разделять globals между его содержимым. Но такое определение ни разу не выглядит очевидным.