Найти - Пользователи
Полная версия: static методы и переменные, перегрузка операций и прочее ООП
Начало » Python для экспертов » static методы и переменные, перегрузка операций и прочее ООП
1 2
nerezus
Где почитать про сабж?
Особенно интересует первое: хотел сделать singleton-класс и… не знаю как )
В книгах что-то сабж не рассматривался, по крайней мере я не видел.
Александр Кошелев
RTFM как говорится
http://docs.python.org/lib/built-in-funcs.html искать staticmethod
http://docs.python.org/ref/customization.html
nerezus
А как сделать метод private, если этот метод __init__?
slav0nic
__priv_method() будет приватным
OlDer
nerezus
Особенно интересует первое: хотел сделать singleton-класс и… не знаю как )
http://aspn.activestate.com/ASPN/search?query=singleton&x=0&y=0&section=PYTHONCKBK&type=Subsection
nerezus
В книгах что-то сабж не рассматривался, по крайней мере я не видел.
Не те книги? В Python Cookbook это точно было.
nerezus
slav0nic
ну я имел ввиду, чтобы конструктор был private )

OlDer
спасибо. Страноо что по популярности самый кривой(ИМХО) способ лидирует, в то время как второй способ(особенно версии его в каментах) показались красивыми.
Александр Кошелев
На самом деле в python синглтон это модуль.
mderk
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 сам класс.
SAnty
На блоге 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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB