Я хочу создать несколько пользовательских исключений для своего класса. Я пытаюсь найти лучший способ сделать эти классы исключений наследуемыми в производных классах. В учебном пособии показано, как создавать классы исключений. Я сделал это так:
Я создал baseclass.py:
class Error(Exception):
"""Base class for exceptions in BaseClass"""
pass
class SomeError(Error):
"""Exection for some error"""
def __init__(self, msg):
self.msg = msg
class OtherError(Error):
"""Exection for some error"""
def __init__(self, msg):
self.msg = msg
class BaseClass():
"""Base test class for testing exceptions"""
def dosomething(self):
raise SomeError, "Got an error doing something"
и производный класс.py:
from baseclass import BaseClass,SomeError,OtherError
class DerivedClass(BaseClass):
def doother(self):
"""Do other thing"""
raise OtherError, "Error doing other"
Затем тест, который использует DerivedClass:
#!/usr/bin/python
from derivedclass import DerivedClass,SomeError,OtherError
"""Test from within module"""
x = DerivedClass()
try:
x.dosomething()
except SomeError:
print "I got some error ok"
try:
x.doother()
except OtherError:
print "I got other error ok"
Итак, как вы можете видеть, я импортировал классы исключений из базового класса в производный класс, а затем снова из производного класса в программу.
Кажется, это работает нормально, но не очень элегантно, и меня беспокоит необходимость убедиться и выполнить импорт в модуль производного класса для всех классов Exception. Кажется, что было бы легко забыть один при создании нового производного класса. Тогда пользователь производного класса получит ошибку, если попытается его использовать.
Есть ли лучший способ сделать это?
Спасибо!
1020 * -Марк *