Стоит ли гарантировать, что не вызываемые классы Python не будут вызваны? - PullRequest
3 голосов
/ 06 декабря 2010

Если да, можете ли вы предложить лучший способ, чем приведенный ниже?Пожалуйста, уточните / обоснуйте.

class X:
    ...

if __name__ == '__main__':
    # TODO: Should we bother doing this?
    errorMessage = 'This class is not meant to have a main method. Do not execute directly.'
    print(errorMessage)
    raise Error(errorMessage)

Ответы [ 4 ]

3 голосов
/ 06 декабря 2010

Я бы не стал этого делать.

И вот почему: python -i scriptname.py можно использовать для загрузки скрипта и перехода к интерактивной консоли после запуска скрипта.Таким образом, вы получаете все определенные функции, которыми вы можете манипулировать / тестировать по своему усмотрению.

По-вашему, вы получите ошибку при этом.

3 голосов
/ 06 декабря 2010

Распространенным шаблоном является размещение модульных тестов для модуля Python внутри корпуса модуля. Например:

if __name__ == "__main__":
    run_unit_tests()

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

2 голосов
/ 06 декабря 2010

Нет, не стоит.В конце концов, если нет вызовов функций верхнего уровня, код ничего не сделает,

1 голос
/ 06 декабря 2010

1) Нет. Если что-то «не может быть вызвано», оно все равно вызовет исключение.

2) Конструкция if __name__ == '__main__' ссылается на модуль , а не научебный класс.«Вызов» класса создает экземпляр класса.Вы также не «вызываете» модули;вы либо импортируете, либо запускаете их.

Пожалуйста, будьте осторожнее с вашей терминологией.Когда вы правильно понимаете концепции, ответы на подобные вопросы становятся очевидными.

...