Я в первую очередь ошибаюсь, начав писать код на Python без чтения PEP. Худшее, что я хотел бы процитировать:
ПРИМЕЧАНИЕ. Здесь я цитирую
1
foo = bar
foobar = bar
foobarbuz = bar
2
foo = "foo"
bar = "bar"
foobar = foo + bar //string concat
3
foo = [1,2,3,4,5,6]
foo_ = []
for bar in foo:
foo_.append(bar)
4
написание операторов импорта с именем проекта
from projectname.appname.models import model
5
Попытка использовать представление как обычный питон functions
Обновление: или слишком много логики в представлении, скорее, что-то перемещая к помощнику (utils), я имею в виду, что здесь плохая практика - делать перенаправление. Есть люди, которые пишут вспомогательные функции в представлении ,
6
Функция / метод без строки документа и использование пространства имен, никак не связанного с контекстом.
статические методы принадлежат классу, который их объявил. При расширении класса вы можете создать статический метод с тем же именем, но на самом деле вы не реализуете статический абстрактный метод.
То же самое касается расширения любого класса статическими методами. Если вы расширяете этот класс и создаете статический метод с той же сигнатурой, вы фактически не переопределяете статический метод суперкласса
EDIT (16 сентября 2009 г.)
вы можете создать статический метод с тем же именем, но на самом деле вы не реализуете статический абстрактный метод.
То же самое касается расширения любого класса статическими методами. Если вы расширяете этот класс и создаете статический метод с той же сигнатурой, вы фактически не переопределяете статический метод суперкласса
EDIT (16 сентября 2009 г.)
вы можете создать статический метод с тем же именем, но на самом деле вы не реализуете статический абстрактный метод.
То же самое касается расширения любого класса статическими методами. Если вы расширяете этот класс и создаете статический метод с той же сигнатурой, вы фактически не переопределяете статический метод суперкласса
EDIT (16 сентября 2009 г.)
Обновите это. Запустив PHP 5.3, я вижу, что абстрактная статика вернулась, хорошо это или плохо. (см. http://php.net/lsb для получения дополнительной информации)
ИСПРАВЛЕНИЕ (от philfreo)
абстрактная статика
все еще не разрешена в PHP 5.3, ] LSB связан, но отличается.
Изучите проблемы PHP «Позднее статическое связывание». Если вы помещаете статические методы в абстрактные классы, вы, вероятно, столкнетесь с этим раньше, чем позже. Имеет смысл, что строгие предупреждения призывают вас избегать использования некорректных языковых функций.
Я бы сказал, что можно увидеть абстрактный класс / интерфейс как договор между программистами. Он больше касается того, как вещи должны выглядеть / вести себя, а не реализовывать фактическую функциональность. Как видно из php5.0 и 5.1.x, это не естественный закон, который мешает разработчикам php делать это, а побуждение идти вместе с другими шаблонами проектирования OO на других языках. В основном эти идеи пытаются предотвратить неожиданное поведение, если кто-то уже знаком с другими языками.
Он больше касается того, как вещи должны выглядеть / вести себя, а не реализовывать фактическую функциональность. Как видно из php5.0 и 5.1.x, это не естественный закон, который мешает разработчикам php делать это, а побуждение идти вместе с другими шаблонами проектирования OO на других языках. В основном эти идеи пытаются предотвратить неожиданное поведение, если кто-то уже знаком с другими языками. Он больше касается того, как вещи должны выглядеть / вести себя, а не реализовывать фактическую функциональность. Как видно из php5.0 и 5.1.x, это не естественный закон, который мешает разработчикам php делать это, а побуждение идти вместе с другими шаблонами проектирования OO на других языках. В основном эти идеи пытаются предотвратить неожиданное поведение, если кто-то уже знаком с другими языками.Я знаю, что это устарело, но ....
Почему бы просто не выбросить исключение в статическом методе родительского класса, иначе, если вы не переопределите его, возникнет исключение.