Лично я использовал бы classmethod каждый раз, когда мне был нужен статический метод. Главным образом, потому что я получаю класс как аргумент.
class myObj(object):
def myMethod(cls)
...
myMethod = classmethod(myMethod)
или использование декоратор
class myObj(object):
@classmethod
def myMethod(cls)
Для статических свойств.. Его время Вы ищете некоторое определение Python.. переменная может всегда изменяться. Существует два типа их изменяемы и неизменны.. Кроме того, существуют атрибуты класса и атрибуты экземпляра.. Ничто действительно как статические атрибуты в смысле Java & C++
, Почему статический метод использования в смысле pythonic, если это не имеет никакого отношения вообще к классу! На вашем месте я или использовал бы classmethod или определил бы метод, независимый от класса.
Да, вы можете звонить несколько раз. Однако каждый раз он создает новый буфер, так что будьте осторожны.
Из руководства : «Буферы вывода можно наращивать, то есть вы можете вызывать ob_start (), пока активен другой ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если активны несколько функций обратного вызова вывода, вывод фильтруется последовательно через каждую из них в порядке вложенности »
Вы говорите следующее:
Я хочу использовать
ob_start
("ob_gzhandler");
для сжатия CSS files
Я бы предпочел обслуживание и сжатие файлов JS / CSS (ну, статических) - это задача веб-сервера (например, Apache), а не PHP.
Об этом вы можете прочитать на ] mod_deflate
- по крайней мере, если вы используете Apache 2.
все файлы на моем сайте загружаются (включен) через индексный файл
Это действительно необходимо? Таким образом, у вас PHP работает без видимой (?) Причины.
(Обратите внимание, что даже если файлы CSS / JS обслуживаются через PHP, Apache должен иметь возможность сжимать их с помощью mod_deflate
; то же самое верно и для HTML, JSON, ... кстати)
Еще одно преимущество отказа от передачи этих файлов через PHP на сервер заключается в том, что их будет легче обслуживать другой сервер, так как ваш сайт будет расти (если он вырастет достаточно, на самом деле):
. При этом ob_start
говорит следующее:
Буферы вывода можно наращивать, то есть вы можете вызвать ob_start (), а другой ob_start () активен. Просто убедитесь что вы вызываете ob_end_flush () соответствующее количество раз. Если несколько функций обратного вызова вывода активен, вывод фильтруется последовательно через каждую из них в порядок размещения.
Итак, я думаю, что ответ на ваш вопрос - «да»: -)