Typo korrigiert.
This commit is contained in:
1
getattr/.gitignore
vendored
Normal file
1
getattr/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
__pycache__
|
||||
17
getattr/Kreis.py
Normal file
17
getattr/Kreis.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from math import pi as pi
|
||||
|
||||
|
||||
class Kreis:
|
||||
def __init__(self, radius):
|
||||
self.radius = radius
|
||||
|
||||
def durchmesser(self):
|
||||
return self.radius * 2
|
||||
|
||||
def umfang(self):
|
||||
return self.durchmesser() * pi
|
||||
|
||||
def flaeche(self):
|
||||
return self.radius** 2 * pi
|
||||
|
||||
|
||||
19
getattr/Kreis_getattr.py
Normal file
19
getattr/Kreis_getattr.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from math import pi as pi
|
||||
|
||||
|
||||
class Kreis_getattr:
|
||||
def __init__(self, radius):
|
||||
self.radius = radius
|
||||
self.operators ={
|
||||
'durchmesser': lambda x: self.radius * 2,
|
||||
'umfang': lambda x: self.durchmesser * pi,
|
||||
'flaeche': lambda x: self.radius**2 *pi
|
||||
}
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name not in self.operators:
|
||||
raise TypeError(f'unbekannte Operation {name}')
|
||||
|
||||
return self.operators[name](0)
|
||||
|
||||
|
||||
17
getattr/name.py
Normal file
17
getattr/name.py
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
class Name:
|
||||
def __init__(self,vorname,name):
|
||||
self.vorname = vorname
|
||||
self.name = name
|
||||
|
||||
def __getattr__(self,attr):
|
||||
if attr == 'fullname':
|
||||
return self.vorname + ' ' + self.name
|
||||
elif attr == 'sortname':
|
||||
return self.name + ',' + self.vorname
|
||||
else:
|
||||
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{attr}'")
|
||||
|
||||
|
||||
|
||||
|
||||
36
getattr/testKreis.py
Normal file
36
getattr/testKreis.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import unittest
|
||||
import Kreis
|
||||
import Kreis_getattr
|
||||
|
||||
|
||||
class TestKreis(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.kreis = Kreis.Kreis(1)
|
||||
self.kreis_getattr = Kreis_getattr.Kreis_getattr(1)
|
||||
|
||||
|
||||
def test_Umfang(self):
|
||||
umfang = self.kreis.umfang()
|
||||
umfang_getattr = self.kreis_getattr.umfang
|
||||
print(f'kreis Umfang {umfang}')
|
||||
print(f'kreis_gettattr Umfang {umfang_getattr}')
|
||||
self.assertEqual(umfang, umfang_getattr)
|
||||
|
||||
def test_Flaeche(self):
|
||||
flaeche = self.kreis.flaeche()
|
||||
flaeche_getattr = self.kreis_getattr.flaeche
|
||||
print(f'kreis Fläche {flaeche}')
|
||||
print(f'kreis_gettattr Fläche {flaeche_getattr}')
|
||||
self.assertEqual(flaeche, flaeche_getattr)
|
||||
|
||||
def test_Durchmesser(self):
|
||||
durchmesser = self.kreis.durchmesser()
|
||||
durchmesser_getattr = self.kreis_getattr.durchmesser
|
||||
print(f'kreis Durchmesser {durchmesser}')
|
||||
print(f'kreis_gettattr Durchmesser {durchmesser_getattr}')
|
||||
self.assertEqual(durchmesser, durchmesser_getattr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
28
getattr/testname.py
Normal file
28
getattr/testname.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import unittest
|
||||
import logging
|
||||
from name import Name
|
||||
|
||||
__LOGLEVEL__ = logging.DEBUG
|
||||
|
||||
logging.basicConfig( format='%(asctime)-15s [%(levelname)s] %(funcName)s: %(message)s', level=__LOGLEVEL__)
|
||||
|
||||
class TestName(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
logging.debug('setting up test')
|
||||
self.name = Name('Homer', 'Simpson')
|
||||
|
||||
def test_getattr(self):
|
||||
fullname = self.name.fullname
|
||||
sortname = self.name.sortname
|
||||
|
||||
|
||||
self.assertEqual('Homer Simpson', fullname)
|
||||
self.assertEqual('Simpson,Homer', sortname)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.debug('Test startet.')
|
||||
unittest.main()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user