$this
- специальная переменная в PHP , которая не может быть назначена. Если он доступен в контексте, где он не существует, эта фатальная ошибка указывается.
Эта ошибка может возникнуть:
class Foo {
protected $var;
public function __construct($var) {
$this->var = $var;
}
public static function bar () {
// ^^^^^^
echo $this->var;
// ^^^^^
}
}
Foo::bar();
Как исправить: снова просмотрите свой код, $this
может использоваться только в контексте объекта и никогда не должен использоваться в статическом методе. Кроме того, статический метод не должен обращаться к нестатистическому свойству. Используйте self::$static_property
для доступа к статическому свойству. $this
переменная. Как исправить: Просмотрите код и замените $this
на другую переменную замещения. Вопросы, относящиеся:
Я сомневаюсь, что Вы получите лучший ответ, чем, "Guido не чувствовал потребность в многострочных комментариях".
Guido имеет , написал в Твиттере об этом:
подсказка Python: можно использовать многострочные строки в качестве многострочных комментариев. Если не используется в качестве docstrings, они не генерируют кода!:-)
Кроме того, многострочные комментарии являются сукой . К сожалению, но независимо от языка, я не использую их ни для чего больше, чем отладка целей. Скажите, что у Вас есть код как это:
void someFunction()
{
Something
/*Some comments*/
Something else
}
Тогда Вы узнаете, что существует что-то в Вашем коде, который Вы не можете зафиксировать с отладчиком, таким образом, Вы начинаете вручную отлаживать его путем комментирования меньших и меньших блоков кода с этими многострочными комментариями. Это тогда дало бы функцию:
void someFunction()
{ /*
Something
/* Comments */
Something more*/
}
Это является действительно раздражающим.
Это - просто предположение.. но
, поскольку они - строки, у них есть некоторое семантическое значение (компилятор не избавляется от них), поэтому имеет смысл для них использоваться в качестве docstrings. Они на самом деле становятся частью AST, так извлечение документации становится легче.
Предположите, что их просто считали ненужными. Так как это настолько легко только к типу #a comment
, многострочные комментарии могут просто состоять из многих однострочных комментариев.
Для HTML , с другой стороны, существует больше потребности в мультилайнерах. Более трудно продолжать вводить <!--comments like this-->
.
Поскольку # соглашение является общим, и действительно нет ничего, что можно сделать с многострочным комментарием, что Вы не можете с комментарием #-sign. Это - исторический несчастный случай, как родословная /* ... */
комментарии, возвращающиеся к PL/I,
Лично мой стиль комментария в говорит, что Java похож
/*
* My multi-line comment in Java
*/
Также - одна строка только комментирует, не такая плохая вещь, если бы Ваш стиль типичен к предыдущему примеру, потому что в сравнении Вы имели бы
#
# My multi-line comment in Python
#
, VB.NET является также языком с одной строкой, только комментируя, и лично я нахожу его раздражающим, поскольку комментарии заканчивают тем, что смотрели, меньшему нравятся комментарии, и больше как некоторая кавычка
'
' This is a VB.NET example
'
Единственные одной строкой комментарии заканчивают тем, что имели меньше символьного использования, чем многострочные комментарии и, менее вероятно, будут оставлены некоторыми изворотливыми символами в regex операторе, возможно? Я был бы склонен соглашаться с Ned все же.
От Дзэн Python :
должны быть один - и предпочтительно только один - очевидный способ сделать это.
Ну, тройные кавычки используются в качестве многострочных комментариев в docstrings. И комментарии # используются в качестве встроенных комментариев, и люди получают использование к нему.
большинство языков сценария не имеет мультилинии, комментирует также. Возможно, это - причина?
Видят PEP 0008, разделяют Комментарии
И видят, предлагает ли Ваш редактор Python некоторое сочетание клавиш для комментария блока. Emacs поддерживает его, а также Eclipse, по-видимому, большинство достойных IDE делает.
Это, вероятно, возвращается к базовому понятию, что должен быть один очевидный способ сделать задачу. Дополнительные стили комментария добавляют ненужные сложности и могли уменьшить удобочитаемость.
Трижды заключенный в кавычки текст нельзя считать многострочными комментариями; условно, они docstrings. Они должны описать то, что делает Ваш код и как использовать его, но не для вещей как комментирование блоков кода.
По словам Guido, многострочные комментарии в Python являются просто непрерывными однострочными комментариями (поиск "комментариев блока").
К блокам комментария кода, я иногда использую следующий шаблон:
if False:
# A bunch of code
Многострочные комментарии легко вскрываемы. Что, если у Вас есть следующее в простой программе калькулятора?
operation = ''
print("Pick an operation: +-*/")
# Get user input here
Попытка прокомментировать, что с многострочным комментарием:
/*
operation = ''
print("Pick an operation: +-*/")
# Get user input here
*/
ой, Ваша строка содержит разделитель комментария конца.
# This
# is
# a
# multi-line
# comment
блок комментария Использования или поиск и замена (s/^/#/g) в Вашем редакторе для достижения этого.
Для всех, кто ищет многострочные комментарии в Python - использование формата тройных кавычек может иметь некоторые проблемные последствия, так как я только что научился трудному пути. Учтите это:
this_dict = {
'name': 'Bob',
"""
This is a multiline comment in the middle of a dictionary
"""
'species': 'Cat'
}
Многострочный комментарий будет заправлен в следующую строку, путая клавишу 'species'
. Лучше просто использовать #
для комментариев.