Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Апрель 22, 2007 12:50:40

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

Где почитать про сабж?
Особенно интересует первое: хотел сделать singleton-класс и… не знаю как )
В книгах что-то сабж не рассматривался, по крайней мере я не видел.



Офлайн

#2 Апрель 22, 2007 12:57:46

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

Офлайн

#3 Апрель 22, 2007 12:58:50

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2174
Репутация: +  36  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

Офлайн

#4 Апрель 22, 2007 13:13:03

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

А как сделать метод private, если этот метод __init__?



Офлайн

#5 Апрель 22, 2007 13:49:40

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2174
Репутация: +  36  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

__priv_method() будет приватным

Офлайн

#6 Апрель 22, 2007 13:54:16

OlDer
От:
Зарегистрирован: 2006-07-19
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

nerezus
Особенно интересует первое: хотел сделать singleton-класс и… не знаю как )
http://aspn.activestate.com/ASPN/search?query=singleton&x=0&y=0&section=PYTHONCKBK&type=Subsection
nerezus
В книгах что-то сабж не рассматривался, по крайней мере я не видел.
Не те книги? В Python Cookbook это точно было.



Офлайн

#7 Апрель 23, 2007 07:20:24

nerezus
От:
Зарегистрирован: 2006-08-01
Сообщения: 178
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

slav0nic
ну я имел ввиду, чтобы конструктор был private )

OlDer
спасибо. Страноо что по популярности самый кривой(ИМХО) способ лидирует, в то время как второй способ(особенно версии его в каментах) показались красивыми.



Офлайн

#8 Апрель 23, 2007 10:10:12

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

На самом деле в python синглтон это модуль.



Офлайн

#9 Апрель 23, 2007 15:19:17

mderk
От:
Зарегистрирован: 2006-11-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

Daevaorn
На самом деле в python синглтон это модуль.
Не совсем корректно. Модуль не поддерживате тот же интерфейс, что поддерживает class instance. Например, __getattr__, __setattr__ и другие magic methods.

Правильнее сказать - синглтон это класс.
Из коробки magic methods тоже не заработают, но можно их заставить это делать через метакласс
class A(type):
def __getattr__(cls, var):
return var

class B(object):
__metaclass__ = A

B.foo
# foo
B.bar
# bar
B.qq = 1
B.qq
# 1
Соответственно, нужно озаботиться, чтобы методы B были декорированы как classmethod, и использовать вместо экземпляров B сам класс.



Отредактировано (Апрель 23, 2007 15:26:43)

Офлайн

#10 Апрель 23, 2007 15:23:04

SAnty
От:
Зарегистрирован: 2006-04-21
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

static методы и переменные, перегрузка операций и прочее ООП

На блоге SUN есть описание сравнение Java, Javascript and Jython, там можна почитать как реализуются ститические методы и переменные
http://blogs.sun.com/sundararajan/entry/java_javascript_and_jython

А варианты реализации патернов (Singleton например) можна почитать здесь:
http://www.garyrobinson.net/2004/03/python_singleto.html
http://www.python.org/workshops/1997-10/proceedings/savikko.html



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version