Предизвикателства > Безгрешен блок > Решения > Решението на Йоанна Стоева

Резултати
1 точки от тестове
0 точки от учител

1 точки общо

1 успешни теста
1 неуспешни теста
Код

 1class ProtectedSection:
 2    def __init__(self, log=(), suppress=()):
 3        self.log_elements = log
 4        self.suppress_elements = suppress
 5        self.exception = None
 6
 7    def __enter__(self):
 8        return self
 9
10    def __exit__(self, exc_type, exc_value, exc_tb):
11        if exc_type is None:
12            return False
13
14        if isinstance(exc_value, self.log_elements):
15            self.exception = exc_value
16            return True
17
18        if isinstance(exc_value, self.suppress_elements):
19            return True
20
21        return False

.F
======================================================================
FAIL: test_special_cases (test.TestSolution.test_special_cases)
Test special cases to show you that you missed something.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 128, in test_special_cases
self.assertIsNone(cm.exception)
AssertionError: ZeroDivisionError('division by zero') is not None

----------------------------------------------------------------------
Ran 2 tests in 0.001s

FAILED (failures=1)

Дискусия
История

f1class ProtectedSection:f1class ProtectedSection:
2    def __init__(self, log=(), suppress=()):2    def __init__(self, log=(), suppress=()):
3        self.log_elements = log3        self.log_elements = log
4        self.suppress_elements = suppress4        self.suppress_elements = suppress
5        self.exception = None5        self.exception = None
66
7    def __enter__(self):7    def __enter__(self):
8        return self8        return self
99
n10    def __exit__(self, exc_type, exc_value, traceback):n10    def __exit__(self, exc_type, exc_value, exc_tb):
11        if exc_type is None:11        if exc_type is None:
12            return False12            return False
1313
14        if isinstance(exc_value, self.log_elements):14        if isinstance(exc_value, self.log_elements):
n15            self.exception = exc_value  n15            self.exception = exc_value
16            return True  16            return True
1717
18        if isinstance(exc_value, self.suppress_elements):18        if isinstance(exc_value, self.suppress_elements):
n19            return True  n19            return True
2020
21        return False21        return False
2222
t23 t
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op