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