Frame Hack Recipe: Generating properties on a wrapper class¶
Step 2¶
Implement the properties
function, using a frame hack. This time, you are not allowed to use the eval
function.
import sys
from employee import Employee
def properties(**kwargs):
"""Implement this function"""
class PyEmployee(object):
def __init__(self, **kwargs):
self.e = Employee()
for k, v in kwargs.items():
setattr(self, k, v)
properties(
given = 'GivenName',
family = 'FamilyName',
birth = 'DateOfBirth',
)
e = PyEmployee(given='Feihong', family='Hsu', birth='2007-11-15')
print e.given, e.e.GetGivenName()
e.given = 'Horatio' # change given name through the property
print e.given, e.e.GetGivenName()
e.family = 'Kodiak'
print e.family, e.e.GetFamilyName()
e.birth = '2009-12-23'
print e.birth, e.e.GetDateOfBirth()
Expected output:
Feihong Feihong
Horatio Horatio
Kodiak Kodiak
2009-12-23 2009-12-23
Solution: solutions/wrapper2.py