Я хотел бы, чтобы вложить Exception подкласс в классе моей, например, так:Nest собственный класс исключений в классе? (Python)
class Foo(object):
def bar(self):
#does something that raises MyException
class MyException(Exception):
pass
Таким образом, у меня только импортировать Foo (а не MyException) при вызове бар() из другого модуля. Но то, что я ниже не работает:
from foo_module import Foo
foo = Foo()
try:
foo.bar()
except Foo.MyException as e:
print e
Python дает эту ошибку:
type object 'Foo' has no attribute 'MyException'
Есть ли способ сделать это?
Какую версию Python вы используете? Я только что выпустил IDLE для Python 2.7.2, определил класс с вложенным классом исключений и метод, который поднял вложенное исключение, а затем попробовал блок try/except, и все сработало нормально. – Ben
Вы делали «импорт foo_module» или «из foo_module import Foo»? –
Я фактически не создал отдельный модуль и не импортировал его. Но я не вижу, как это может измениться. Либо объект «Foo» имеет атрибут «MyException», либо нет. По-видимому, вложенный класс-блок, возможно, не стал атрибутом внешнего класса для какой-то неясной причины, но импорт из другого модуля никак не повлияет на его атрибуты. Я подозреваю, что что-то еще не так. Можете ли вы построить тестовый пример * small *, который дает вам эту ошибку, когда вы запускаете ее и вставляете ** полное ** содержимое обоих файлов здесь? – Ben