Вызов скрипта Python из командной строки выдает синтаксическую ошибку, когда класс ничего не наследует. Почему? - PullRequest
2 голосов
/ 20 февраля 2012

Этот вопрос не имеет (для меня) никакого реального смысла. Я просто узнал об этом по стечению обстоятельств, и мне любопытно, что за механика стоит за этим. Я получил пример скрипта:

#!/usr/bin/env python
"""
just an example
"""

class exampleClass():
    'this is just an example'


if __name__ == '__main__':
    print(__doc__)

Выполнение этого в eclipse print "просто пример". Однако, когда я пытаюсь запустить это в терминале, я получаю следующую ошибку:

File "./temp.py", line 6
   class exampleClass():
                       ^
  SyntaxError: invalid syntax

Теперь, когда я изменяю класс в примере сценария для наследования от dict

class exampleClass(dict):

и запустить его из командной строки, он также печатает «просто пример». Так почему же классы должны наследовать что-то для работы из командной строки, а не из затмения?

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Согласно грамматике Python 2.7.2 , следующий синтаксис неверен:

class exampleClass():
    'this is just an example'

Это должно быть либо

class exampleClass:
    'this is just an example'

или

class exampleClass(object): # or `dict' etc
    'this is just an example'

По всей вероятности, вы используете две разные версии интерпретатора Python, и по какой-то причине один из интерпретаторов допускает неверный синтаксис, а другой - нет.

1 голос
/ 20 февраля 2012

Вы не должны использовать круглые скобки

class exampleClass:
    pass 

, если вы не хотите наследовать от другого класса, например ::1004*

class exampleClass(object):
    pass 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...