-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathday-14-polymorphism.py
48 lines (35 loc) · 1.06 KB
/
day-14-polymorphism.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class BasicCalculator:
def sum(self, numlist: list):
_sum = 0
for num in numlist:
_sum += num
return _sum
def _digits(self, number):
digit = 0
while number != 0:
digit+=1
number//=10
return digit
def product(self, numlist):
_product = 1
for num in numlist:
if self._digits(num) > 3:
raise ValueError("Basic Calculator can only handle 3 digits.")
_product *= num
return _product
class ComplexCalculator(BasicCalculator):
def power(base, exponent):
return base ** exponent
def abs(number):
if number >= 0:
return number
return -number
def product(self, numlist):
_product = 1
for num in numlist:
if self._digits(num) > 8:
raise ValueError("Complex Calculator can only handle 8 digits.")
_product *= num
return _product
basic = BasicCalculator()
complex = ComplexCalculator()