Я не могу вспомнить, где я нашел это решение, но я считаю, что это самый «элегантный» из моей не-Python-экспертной точки зрения:
class SomeSingleton(dict):
__instance__ = None
def __new__(cls, *args,**kwargs):
if SomeSingleton.__instance__ is None:
SomeSingleton.__instance__ = dict.__new__(cls)
return SomeSingleton.__instance__
def __init__(self):
pass
def some_func(self,arg):
pass
Почему мне нравится это? Нет декораторов, нет мета-классов, нет множественного наследования ... и если вы решите, что больше не хотите, чтобы это был синглтон, просто удалите метод __new__
. Поскольку я новичок в Python (и ООП в целом), я ожидаю, что кто-то задаст мне прямо, почему это ужасный подход?
В стандартном SQL: все столбцы в каком-либо конкретном SELECT
разделе вычисляются так, как будто «все они вычисляются параллельно (чтобы позволить некоторой реализации выполнить именно это).
, вам не разрешено зависеть от другого столбца, определенного в одном и том же предложении SELECT
, поскольку его значение еще не вычислено.
Если вы проверите документацию , вы увидите, что вам разрешено использовать ее только в предложении order by
:
Укажите псевдоним для столбца выражение. Oracle Database будет использовать этот псевдоним в заголовке столбца набора результатов. Ключевое слово AS необязательно. Псевдоним эффективно переименовывает элемент списка выбора в течение всего времени запроса. Псевдоним может использоваться в order_by_clause, но не в других предложениях запроса.
blockquote>