problem with defining setters and getters
John Hunter
jdhunter at ace.bsd.uchicago.edu
Wed Mar 12 11:04:23 EST 2003
I have a class that is initialized with another object that has
certain attributes I want to expose to the class with getters and
setters. I am doing this
class Entry:
def __init__(self):
self.pid = 1
self.somevar = 2
def get_field_names(self):
return ['pid', 'somevar']
class MyClass:
def __init__(self, entry):
self.entry = entry
for name in entry.get_field_names():
def get_func(): return getattr(self.entry, name)
def set_func(val): return setattr(self.entry, name, val)
setattr(self, 'get_' + name, get_func)
setattr(self, 'set_' + name, set_func)
entry = Entry()
c = MyClass(entry)
c.set_somevar('John')
print c.get_pid()
entry has a function get_field_names that returns a list of attributes
that I want to expose. pid is one of those attributes, and I am
calling set_pid and get_pid as a test case.
The problem is that all of the getters and setters take on the last
attribute returned by field names. That is, get_pid returns 'John' in
the example above, and I want it to return 1. It appears that there
is only one get_func in the __init__ loop, and all of the getters are
using this func. Likewise for set_func.
Suggestions to fix this and explanations welcome.
Thanks,
John Hunter
python 2.2
More information about the Python-list
mailing list