Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Хочу сделать различные пакеты максимально независимыми, поэтому решил в каждом из них использовать файл __init__ для указания общей для пакета специфики (константы, общие объекты....).

Но мне приходится писать смешной код в духе:
from Database.Tables import __init__ as init


Неужели нельзя в пакете использовать его объекты из файла инициализации без дополнительных плясок с бубном?
30 янв 19, 15:16    [21797884]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Разместил глобальные переменные в __init__ для каждого пакета. Теперь при попытке обращения к этим атрибутам получаю ошибку:
AttributeError: 'method-wrapper' object has no attribute 'FormsDirectory'

В файле __init__ пакета Forms присутствует единственная строка:
FormsDirectory = '/home/alesha/eclipse-workspace/AnalysisData/Forms/'


В другом файле (где хочу использовать эту переменную):
from Forms import __init__ as MyForms

d = MyForms.FormsDirectory // ТУТ ОШИБКА !!!


Посмотрел в отладчике: действительно переменная MyForms имеет тип method-wrapper и никаких переменных у нее нет... Что за хрень? Ведь это обычный модуль!
3 фев 19, 16:32    [21800811]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL,

Алексей, когда вы уже наконец перестанете маяться дурью и прочитаете хоть какой-нибудь учебник по питону?
4 фев 19, 08:10    [21801001]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Лысый дядька
AlekseySQL,

Алексей, когда вы уже наконец перестанете маяться дурью и прочитаете хоть какой-нибудь учебник по питону?


Напишите, пожалуйста, учебник, в котором рассмотрен именно этот вопрос.
4 фев 19, 09:14    [21801027]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
Всем спасибо, оказывается с __init__ надо делать так:

import Forms
d = Forms.FormsDirectory
4 фев 19, 09:27    [21801036]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL
Напишите, пожалуйста, учебник, в котором рассмотрен именно этот вопрос.

В любом учебнике подробно рассмотрен этот вопрос. Вы же ни одного не читали. Вам лень или вы слегка туповаты?
4 фев 19, 09:36    [21801044]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
Лысый дядька
Member

Откуда:
Сообщений: 356
AlekseySQL
Всем спасибо, оказывается с __init__ надо делать так:


Оказывается!!! Вот это открытие!
4 фев 19, 09:36    [21801045]     Ответить | Цитировать Сообщить модератору
 Re: Объекты из __init__ не видны в модулях пакета. Так задумано?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3563
AlekseySQL
Всем спасибо, оказывается с __init__ надо делать так:

import Forms
d = Forms.FormsDirectory

И это написано в любом учебнике по питону. Следовательно, учебник ты не читал. С C++ у тебя такая же история.
4 фев 19, 09:46    [21801049]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить