2011-01-07 4 views
1

В python, есть ли способ выйти из класса после тестирования состояния, не выходя из python?ошибки ловушки и выход

Скажем, у меня есть класс

class test(): 
    def __init__(self): 
     self.a = 2 

    def create_b(self): 
     self.b = 3 

    def does_b_exist(self): 
     if <self.b doesnt exist>: 
      #terminate 

     self.b += 1 

попытка/except` не работает, так как остальная часть программы не прекращается после неудачной. Я в основном пытаюсь поймать ошибку и делать то, что делает python, когда он показывает вам ошибки, но я не могу понять, как это сделать.

+0

Итак, вы хотите, чтобы вся программа заканчивалась на строке «#minminate»? Это будет работа для sys.exit(), но посмотрите мой ответ, если это не совсем то, что вы хотите. Лучшее описание помогло бы:) – TryPyPy

+0

Вы можете выйти из метода 'make_b_exist()', используя 'return'. – martineau

+0

Концепция «выхода из класса» на самом деле не имеет никакого смысла. Во-первых, вы не «в» классе; вы используете метод объекта. –

ответ

2

Возможно, вы захотите запустить «python -i», который приведет вас к интерактивную консоль после выполнения программы, запустить sys.exit(), которая завершает работу программы, или вы (возможно) хотите настроить sys.excepthook. Опишите поведение, которое вы хотите, немного более подробно, и мы можем дать вам некоторый код, чтобы попробовать.

+0

его точно, что я искал. благодаря! –

+0

Какой из вариантов был? :) – TryPyPy

0

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

+1

Что? Разумеется, класс можно назвать. При вызове он создает экземпляр. :) –

+0

О чем я думал? – motoku

Смежные вопросы