This is not a request for help but a request for comments:
Consider the following code and note that
1)The initializer uses the dictionary style of arguments
2)The check loop executes before all of the class variables
  are declared
## --------------------------------------------------------------------
class formLoader():
        def __init__(self,**kw):
                self.fileName = None
                self.record = None
                self.string = None
                ## Uncomment below to see that only fileName, record and string
                ## are recorded by __dict__
                #std.debug("self.__dict__",self.__dict__) 
                for k in kw.keys():
                        if k in self.__dict__:
                                self.__dict__[k] = kw[k]
                        else:
                                raise AttributeError("%s is not a class member. 
Use one of ('%s')"
                                                   % (repr(k),"', 
'".join(self.__dict__.keys())))
                self.tokens = 
["form","input","textarea","select","option","form"]
                self.inputTypes = 
["button","checkbox","file","hidden","image","password",
                                   "radio","reset","submit","text"]
                self.inputValTypes = ["file","hidden","password","text"]        
                                           
                self.colnames = []      ## case-insensitive column names
                self.formIndexes = []   ## Index forms in outer list
## .....
## --------------------------------------------------------------------
Now if I were to code something like the following:
fml = formLoader(fileName=doc,tokens="tim")
## Note that `tokens' is passed as a named argument.
I get the following error message:
AttributeError: 'tokens' is not a class member. Use one of ('record',
'string', 'fileName')

I am not complaining! This is a good thing and a cool idiom.
Placing the the check loop after _only_ the keywords that I wanted to
allow _disallows_ any others.
I'd welcome comments - such as any other applications.

Always a newbie ....
-- 
Tim 
t...@johnsons-web.com
http://www.akwebsoft.com
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to