Thanks, One last question (okay, one MORE question ;) ) when you call a method/function with optionaly *args **kwargs, I'm finding I need to make the statement like;
def myFunc(self, *args,**kwargs): do something In ord to pass the kwargs: myFunc(**kwargs) # where kwargs is a dictionary or for args: myFunc(a,b,c, etc.) It is correct that you need to use the '**' in the 'calling' statement? On Nov 4, 2007 2:31 PM, Kent Johnson <[EMAIL PROTECTED]> wrote: > John wrote: > > I've now written my first set of Classes to do some fairly specific > > processing for work I do. I have a few questions. > > > > First, in looking through what I've done, I basically just incorporated > > all my previous scripts into classes... they are still highly specific > > to my application, though I did try to make them somewhat 'reusable' or > > general. It is difficult though, as portions required hardcoding. For > > that I used the __init__ method to define a bunch of 'hardcoded' > > variables, that could then be set if they were passed on initiation. > > You didn't show your original script or enough context for me to judge > if this was a useful change. A program that uses classes rather than > simple scripts is not necessarily 'better' than one that doesn't. > Classes are a tool that is helpful in some circumstances but not all. In > other words don't add classes to your programs just because it seems > like a good idea. Some good reasons for using classes are here: > http://personalpages.tds.net/~kent37/stories/00014.html > > > I guess, I'm writing because I'm wondering now what people think about > > writing classes versus just using scripts for things that are so > > specific. It's hard for me to give an example, or show what I'm doing, > > but I would appreciate thoughts on that matter. > > It's ok for classes to be specific. > > > One thing I am struggling with is how to assign *args and **kwargs if > > they are passed, and how to ignore them if they are not... right now I > > do this: > > > > def myfunc(self, *args,**kwargs): > > a=self.a > > b=self.b > > kwa=self.kwa > > kwb=self.kwb > > try: > > a=args[0]; b=args[1] > > kwa=kwargs['a'] > > kwb=kwargs['b'] > > except: pass > > > > > > Where self.X is defined in the __init__ of the class. Is that correct? > > No, this will not assign from kwargs if args is not given. How about this: > def myfunc(self, *args,**kwargs): > try: > a=args[0]; b=args[1] > except TypeError: > a=self.a > b=self.b > try: > kwa=kwargs['a'] > kwb=kwargs['b'] > except TypeError: > kwa=self.kwa > kwb=self.kwb > > Kent > -- Configuration `````````````````````````` Plone 2.5.3-final, CMF-1.6.4, Zope (Zope 2.9.7-final, python 2.4.4, linux2), Five 1.4.1, Python 2.4.4 (#1, Jul 3 2007, 22:58:17) [GCC 4.1.1 20070105 (Red Hat 4.1.1-51)], PIL 1.1.6
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor