Почему Python не имеет многострочных комментариев?

Неустранимая ошибка: использование $ this, если не в контексте объекта

$this - специальная переменная в PHP , которая не может быть назначена. Если он доступен в контексте, где он не существует, эта фатальная ошибка указывается.

Эта ошибка может возникнуть:

  1. Если нестатический метод называется статическим , Пример:
    class Foo {
       protected $var;
       public function __construct($var) {
           $this->var = $var;
       }
    
       public static function bar () {
           // ^^^^^^
           echo $this->var;
           //   ^^^^^
       }
    }
    
    Foo::bar();
    
    Как исправить: снова просмотрите свой код, $this может использоваться только в контексте объекта и никогда не должен использоваться в статическом методе. Кроме того, статический метод не должен обращаться к нестатистическому свойству. Используйте self::$static_property для доступа к статическому свойству.
  2. Если код из метода класса был скопирован в нормальную функцию или только глобальную область и , сохраняя специальную функцию $this переменная. Как исправить: Просмотрите код и замените $this на другую переменную замещения.

Вопросы, относящиеся:

  1. Вызов нестатический метод как статический: PHP Неустранимая ошибка: использование $ this, если не в объектном контексте
  2. Копировать код: Неустранимая ошибка: использование $ this, если не в объекте context
  3. Все «Использование $ this, если не в контексте объекта» Вопросы по Stackoverflow

243
задан Peter Mortensen 18 March 2014 в 18:58
поделиться

13 ответов

Я сомневаюсь, что Вы получите лучший ответ, чем, "Guido не чувствовал потребность в многострочных комментариях".

Guido имеет , написал в Твиттере об этом:

подсказка Python: можно использовать многострочные строки в качестве многострочных комментариев. Если не используется в качестве docstrings, они не генерируют кода!:-)

260
ответ дан Simeon Leyzerzon 23 November 2019 в 03:10
поделиться

Кроме того, многострочные комментарии являются сукой . К сожалению, но независимо от языка, я не использую их ни для чего больше, чем отладка целей. Скажите, что у Вас есть код как это:

void someFunction()
{
    Something
    /*Some comments*/
    Something else
}

Тогда Вы узнаете, что существует что-то в Вашем коде, который Вы не можете зафиксировать с отладчиком, таким образом, Вы начинаете вручную отлаживать его путем комментирования меньших и меньших блоков кода с этими многострочными комментариями. Это тогда дало бы функцию:

void someFunction()
{ /*
    Something
   /* Comments */
   Something more*/
}

Это является действительно раздражающим.

0
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Это - просто предположение.. но

, поскольку они - строки, у них есть некоторое семантическое значение (компилятор не избавляется от них), поэтому имеет смысл для них использоваться в качестве docstrings. Они на самом деле становятся частью AST, так извлечение документации становится легче.

0
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Предположите, что их просто считали ненужными. Так как это настолько легко только к типу #a comment, многострочные комментарии могут просто состоять из многих однострочных комментариев.

Для HTML , с другой стороны, существует больше потребности в мультилайнерах. Более трудно продолжать вводить <!--comments like this-->.

0
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Поскольку # соглашение является общим, и действительно нет ничего, что можно сделать с многострочным комментарием, что Вы не можете с комментарием #-sign. Это - исторический несчастный случай, как родословная /* ... */ комментарии, возвращающиеся к PL/I,

0
ответ дан Charlie Martin 23 November 2019 в 03:10
поделиться

Лично мой стиль комментария в говорит, что Java похож

/*
 * My multi-line comment in Java
 */

Также - одна строка только комментирует, не такая плохая вещь, если бы Ваш стиль типичен к предыдущему примеру, потому что в сравнении Вы имели бы

#
# My multi-line comment in Python
#

, VB.NET является также языком с одной строкой, только комментируя, и лично я нахожу его раздражающим, поскольку комментарии заканчивают тем, что смотрели, меньшему нравятся комментарии, и больше как некоторая кавычка

'
' This is a VB.NET example
'

Единственные одной строкой комментарии заканчивают тем, что имели меньше символьного использования, чем многострочные комментарии и, менее вероятно, будут оставлены некоторыми изворотливыми символами в regex операторе, возможно? Я был бы склонен соглашаться с Ned все же.

5
ответ дан Kezzer 23 November 2019 в 03:10
поделиться

От Дзэн Python :

должны быть один - и предпочтительно только один - очевидный способ сделать это.

9
ответ дан Jeremy Cantrell 23 November 2019 в 03:10
поделиться

Ну, тройные кавычки используются в качестве многострочных комментариев в docstrings. И комментарии # используются в качестве встроенных комментариев, и люди получают использование к нему.

большинство языков сценария не имеет мультилинии, комментирует также. Возможно, это - причина?

Видят PEP 0008, разделяют Комментарии

И видят, предлагает ли Ваш редактор Python некоторое сочетание клавиш для комментария блока. Emacs поддерживает его, а также Eclipse, по-видимому, большинство достойных IDE делает.

12
ответ дан Abgan 23 November 2019 в 03:10
поделиться

Это, вероятно, возвращается к базовому понятию, что должен быть один очевидный способ сделать задачу. Дополнительные стили комментария добавляют ненужные сложности и могли уменьшить удобочитаемость.

30
ответ дан Jarred McCaffrey 23 November 2019 в 03:10
поделиться

Трижды заключенный в кавычки текст нельзя считать многострочными комментариями; условно, они docstrings. Они должны описать то, что делает Ваш код и как использовать его, но не для вещей как комментирование блоков кода.

По словам Guido, многострочные комментарии в Python являются просто непрерывными однострочными комментариями (поиск "комментариев блока").

К блокам комментария кода, я иногда использую следующий шаблон:

if False:
    # A bunch of code
34
ответ дан Triptych 23 November 2019 в 03:10
поделиться

Многострочные комментарии легко вскрываемы. Что, если у Вас есть следующее в простой программе калькулятора?

operation = ''
print("Pick an operation:  +-*/")
# Get user input here

Попытка прокомментировать, что с многострочным комментарием:

/*
operation = ''
print("Pick an operation:  +-*/")
# Get user input here
*/

ой, Ваша строка содержит разделитель комментария конца.

60
ответ дан Steve Losh 23 November 2019 в 03:10
поделиться
# This
# is
# a 
# multi-line
# comment

блок комментария Использования или поиск и замена (s/^/#/g) в Вашем редакторе для достижения этого.

4
ответ дан recursive 23 November 2019 в 03:10
поделиться

Для всех, кто ищет многострочные комментарии в Python - использование формата тройных кавычек может иметь некоторые проблемные последствия, так как я только что научился трудному пути. Учтите это:

this_dict = {
    'name': 'Bob',

"""
This is a multiline comment in the middle of a dictionary
"""

    'species': 'Cat'
}

Многострочный комментарий будет заправлен в следующую строку, путая клавишу 'species'. Лучше просто использовать # для комментариев.

1
ответ дан 23 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: