TestFun/danilkonon1239
TestFun/ponamaryovvaleriy
n1"""n1class Tester(Exception):
22
n3Написать класс Tester, при создании экземпляра которого ему передаётся единственный параметр — некоторая функция fun.n
4Сам экземпляр должен быть callable, и принимать два параметра — последовательность кортежей suite и
5 (возможно, пустая) последовательность исключений allowed.
6  При вызове должна осуществляться проверка, можно ли функции fun()
7  передавать каждый элемент suite в качестве позиционных параметров.
8   Если исключений не возникло, результат работы — 0, если исключения попадали
9   под классификацию одного из allowed, результат — -1, если же были исключения не из allowed — 1.
10 
11 
12Toggle line numbers
13   1 T = Tester(int)
14   2 print(T([(12,), ("12", 16)], []))
15   3 print(T([(12,), ("12", 16), ("89", 8)], [ValueError, IndexError]))
16   4 print(T([(12,), ("12", 16), ("89", 8), (1, 1, 1)], [ValueError, IndexError]))
17 
180
19-1
201
21К. О. советует определить метод .__call__()
22 
23Спойлер: В клаузе except можно написать кротеж из исключений!
24 
25"""
26 
27class Tester:
28 
29    def __init__(self, fun):3    def __init__(self, func):
30        self.fun = fun4        self.func = func
315
32    def __call__(self, suite, allowed=()):6    def __call__(self, suite, allowed=()):
n33        flag = 0n7        resflag = 0
34        for pair in suite:8        for el in suite:
35            try:9            try:
n36                self.fun(*pair)n10                self.func(*el)
37            except tuple(allowed):11            except tuple(allowed):
n38                flag = -1n12                resflag = -1
39            except Exception:13            except Exception:
t40                flag = 1t14                resflag = 1
41                break
42        return flag15        return resflag
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op