On 2009-10-30, Steven D'Aprano <st...@remove-this-cybersource.com.au> wrote: > > Could you explain what problem you are trying to solve? > > >> class formLoader(): Hi Steve In a nutshell: The 'problem' is to parse a form in such a way that tags which are to be modified are represented as dictionaries. The 'grunt' work is done. This class will probably grow with time.
> Idiomatic Python is to use CamelCase for classes. Can you point me to a discussion on Idiomatic Python, CamelCase and other matters? > Is your intention to ensure that the only keyword arguments allowed are > fileName, record and string? Correct. > Perhaps the easiest way to do that is: > > for k in kw: > if k not in ('filename', 'record', 'string'): > raise Exception() # whatever... > setattr(self, k) = kw[k] Understood. A better 'trick' >> else: >> raise AttributeError( > > In my opinion, AttributeError is not appropriate here. Passing an invalid > parameter shouldn't raise the same error as failing an attribute look-up. > That's misleading and confusing. What error class or other approach do you recommend? > [Aside: eight space tabs are *WAY* too big for Usenet and email. You > should use four spaces, or even two, when posting here.] Yikes! I just starting using vim with slrn again. Will take care of that. > It is idiomatic Python to use "instance attributes" to refer to > attributes attached to instances, and "class attributes" to refer to > those attached to classes. Talking about "class members" will confuse > Python developers who aren't also familiar with Java or C++. (I know it > confuses *me* -- are class members shared by all instances in a class, as > the name implies, or are they individual to the instance, as your code > implies?) Thanks for that. C++ corrupted me. > I also should point out that your trick will fail if you are using > __slots__. ??. Will research that. Elaborate if you wish. >> self.tokens = > ["form","input","textarea","select","option","form"] <....> > > Is any of that relevant to the trick you are asking for comments for? If > not, why is it here? It was there to illustrate my edification of the usage of self.__dict__ >> I'd welcome comments - such as any other applications. > > Personally, I don't like it. The method signature makes it impossible to > tell what arguments are excepted, and it forces me to use keywords even > if I'd prefer to use positional arguments. I prefer to let the > interpreter check the arguments for me: Using your tuple example would clarify things. The method signature then becomes the tuple. I.E #<steve sayeth> if k not in ('filename', 'record', 'string'): # handle here If the class grows - and I expect it will - I'd prefer to stick with the keywords approach. That approach also allows me to use a dictionary to initialize the object. Thanks for the input. Very helpful. - and always a newbie - -- Tim t...@johnsons-web.com http://www.akwebsoft.com -- http://mail.python.org/mailman/listinfo/python-list