Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2008 08:14:33

AlexanderDanilov
От: Ukraine, Kiev
Зарегистрирован: 2007-10-17
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

Добрый день, есть несколько классов, каждый из них использует экземпляр класса DB для доступа к базе данных.

Вопрос как сделать так, чтобы все эти классы использовали один и тот же экземпляр DB, чтобы не плодить экземпляры и коннекшены?
Предположительно, есть два варианта:

1. Создать некий класс, который будет выдавать ссылку на экземпляр класса при запросе, что-то типа get_object('DB')
2. Передавать в каждый класс, где нужна работа с DB ссылку на ранее созданный объект, но вопрос, есть ли в python ссылки?



Офлайн

#2 Ноя. 14, 2008 08:20:46

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Есть ли понятие статичных переменных?

class Database:
pass

class Foo:

def __init__(self, db):
self.db = db

db = Database()
foo1 = Foo(db)
foo2 = Foo(db)
foo3 = Foo(db)
..bw



Офлайн

#3 Ноя. 14, 2008 08:25:48

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

В питоне практически все что имеет имя - ссылка, за редким исключением =)



Офлайн

#4 Ноя. 14, 2008 08:33:46

AlexanderDanilov
От: Ukraine, Kiev
Зарегистрирован: 2007-10-17
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

Понятно, спасибо большое!



Офлайн

#5 Ноя. 14, 2008 09:15:19

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Есть ли понятие статичных переменных?

> В питоне практически все что имеет имя - ссылка, за редким исключением =)
Без исключений. Или поправь меня?
Есть объекты, есть ссылки на них. Все имена, это ссылки на объекты. Содержимое списка - это не именованные ссылки. a = 1 и b = 1 - a и b это ссылки на один и тот же объект, т.е. a is b -> True.
Дальше - больше :-). Класс - это объект, экземпляр класса, типы - это объекты. Функция (метод), лямбда - это объекты. Код, который содержит метод - это объект. Ну и так далее, я думаю, Chuck, ты понял мою мысль.

..bw



Офлайн

#6 Ноя. 14, 2008 09:23:47

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

поправить не могу.
но чую, что где-то есть подвох. хотя может чувство меня и обманывает.



Отредактировано (Ноя. 14, 2008 09:27:59)

Офлайн

#7 Ноя. 14, 2008 09:52:42

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

Подумал. Есть такое предположение.

Если продложать рассуждать в рамках сишных аналогий с указателями (а “имя” внутрях питона вроде и реализуется как указатель).
Нельзя сделать ссылку на само имя. А в С можно например можно сделать указатель на указатель %))



Отредактировано (Ноя. 14, 2008 09:53:42)

Офлайн

#8 Ноя. 14, 2008 10:00:16

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Есть ли понятие статичных переменных?

А если еще подумать.
То в Python'е не существует такого понятия как имя переменное (как мне представляеся) на уровне байт-кода. Вспомни откуда у нас вытягиваются объекты по имени - правильно из словаря экземпляра, класса или одного из подклассов. То же самое относится и к локальному и глобальному пространствам. Так же существуют словари предоставляющие доступ к локальным или глобальным переменным. А в таких словарях ключами являются строка-объект.
Так что ложки нет :-).

..bw



Офлайн

#9 Ноя. 14, 2008 10:07:53

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

ым… но при этом они как-то умудряются ссылаться на конкретный адрес в памяти, который можно даже посмотреть id().
Не в словаре-же объект лежит.



Отредактировано (Ноя. 14, 2008 10:09:12)

Офлайн

#10 Ноя. 14, 2008 10:51:02

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть ли понятие статичных переменных?

ну да, все так.
Но адреса памяти где-то ведь хранятся.
Да и сборщик мусора как-то учитывает количество имен.
Значит скорее всего есть какая-то хреновина, в которой прописаны имена и адреса =)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version