내가 그렇게처럼, 내 자신의 클래스 내에서 둥지에 예외 서브 클래스를 싶습니다클래스 내에 사용자 정의 예외 클래스를 중첩합니까? (파이썬)
class Foo(object):
def bar(self):
#does something that raises MyException
class MyException(Exception):
pass
이 방법은, 난 단지 푸 (그리고 MyException를) 가져가 줄을 호출 할 때() 다른 모듈로부터. 하지만 제가 아래가 작동하지 않습니다
type object 'Foo' has no attribute 'MyException'
이 할 수있는 방법이 있나요 :
from foo_module import Foo
foo = Foo()
try:
foo.bar()
except Foo.MyException as e:
print e
파이썬이 오류를 준다?
class Foo():
def RaiseBar(self):
raise Foo.Bar("hi")
class Bar(Exception):
pass
그리고 파이썬 터미널에서이 작업을 실행 :
>>> import t
>>> x = t.Foo()
>>> try:
... x.RaiseBar()
... except t.Foo.Bar as e:
... print e
...
hi
이 정확하지가 당신이 찾고 있던 무슨
어떤 Python 버전을 사용하고 있습니까? 방금 Python 2.7.2에서 IDLE을 실행하고 중첩 예외 클래스가있는 클래스를 정의한 다음 중첩 예외를 발생시킨 메서드를 시도한 다음 try/except 블록을 시도하고 모든 것이 올바르게 작동했습니다. – Ben
"import foo_module"또는 "foo_module import Foo"를하고 계셨습니까? –
저는 실제로 별도의 모듈을 설치하지 않고 가져 왔습니다. 그러나 그것이 어떻게 변화를 가져올 수 있는지 나는 알 수 없다. 'Foo' 객체는 'MyException' 속성을 가지고 있거나 그렇지 않습니다. 어쩌면 중첩 된 클래스 블록은 애매한 이유로 외부 클래스의 속성이되지 않을 수도 있지만 다른 모듈에서 가져 오는 방법이 없으므로 속성에 어떤 영향을 미치게됩니다. 나는 다른 것이 잘못 될 것으로 생각합니다. 이 오류를 실행하고 두 파일의 전체 ** 내용을 여기에 붙여 넣을 때 * 작은 * 테스트 케이스를 만들 수 있습니까? – Ben