Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python области видимости и организация кода / 3 сообщений из 3, страница 1 из 1
26.05.2015, 10:29
    #38968391
Cpt. Gray
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python области видимости и организация кода
Доброго времени,

Изучаю Python потихоньку и как истинный ООПист не понимаю одного момента
Код в Питоне организовывается в модулях, аналог пакетов в Джаве
Но в Джаве, в пакетах, нельзя объявлять просто переменные вне рамках какого-то класса

Получается, когда в Питоне импортируется пакет целиком, то мы получаем и доступ к этой "глобальной переменной пакета"?
А вот интересует такой момент, если импортируем только класс из пакета, который использует эту переменную в пакете, то мы будем иметь доступ из вне и к этой переменной? Или её только класс сможет использовать?

И в связи с этим такой вопрос, как в Питоне организовывают код?
В Джаве +- 1 класс == 1 файл, все классы общей направленности - организовываются в пакеты
А в Питоне как? 1 файл == 1 пакет и там внутри куча классов и тд? Или нет особых подходов и абы было просто, красиво и понятно?
...
Рейтинг: 0 / 0
26.05.2015, 11:38
    #38968468
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python области видимости и организация кода
1. >>>А в Питоне как? 1 файл == 1 пакет
один файл == один модуль, модули объединяются в пакеты, пакеты могут объединяться в более объемлющие пакеты.
2. При первом импорте пакета в программе выполняется файл __init__.py пакета
3. При первом импорте модуля в программе выполняется весь код модуля
4. В питоне из модуля можно импортировать всё, а можно отдельные элементы
5. Возможность импортировать всё из модуля регулируется спец. переменной __all__
6. При первом импорте класса выполняется метакласс класса и весь код вне методов.

Cpt. Grayесли импортируем только класс из пакета, который использует эту переменную в пакете, то мы будем иметь доступ из вне и к этой переменной?

А это как? Приведи пример кода, как через экземпляр класса получить переменную, определенную вне класса.


Cpt. GrayПолучается, когда в Питоне импортируется пакет целиком, то мы получаем и доступ к этой "глобальной переменной пакета"?
Если переменная определена в __init__ пакета, то да
Если переменная определена в модуле, доступ к ней можно получить через точечную нотацию по имени модуля.
...
Рейтинг: 0 / 0
26.05.2015, 14:31
    #38968743
Cpt. Gray
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Python области видимости и организация кода
Я думал, что модули и пакеты это синонимы в Питоне, а оказывается, это совсем разные вещи
Спасибо большое!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python области видимости и организация кода / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]