Question about code writing '% i, callback'

fl rxjwg98 at gmail.com
Mon Nov 30 13:55:23 EST 2015


On Monday, November 30, 2015 at 12:02:57 PM UTC-5, Ian wrote:
> On Mon, Nov 30, 2015 at 10:44 AM, fl <ail.com> wrote:
> > I come across the following code snippet.
> >
> > for i in range(10):
> >     def callback():
> >         print "clicked button", i
> >     UI.Button("button %s" % i, callback)
> >
> > The content inside parenthesis in last line is strange to me.
> >
> > "button %s" % i, callback
> 
> These are the arguments being passed to UI.Button. The first argument is:
> 
>     "button %s" % i
> 
> This is an example of printf-style string formatting. See the link
> that Zachary posted.
> 
> The second argument is the function named callback.
> 
> > That is, the writing looks like recognized as three items when I try with a
> > class definition (it can run with this):
> >
> > class buibutton():
> >     print 'sd'
> >     def __nonzero__(self):
> >        return False
> >
> >     def Button(str, ii, callbackk):
> >
> >         return
> >
> >
> > Could you explain it to me?
> 
> How is this related to the example above?
> 
> Here, Button is defined as a method of a class. Since it's a method,
> the first parameter is the "self" parameter, which will implicitly
> take the value of the class instance that you're calling the Button
> method on. If you're trying to call this like above, then the second
> parameter "ii" will take the value of the string from the example
> above, and callbackk will take the value of the callback argument from
> above.
> 
> Thus, the method that you've defined has three parameters but only
> takes two explicit arguments.

"How is this related to the example above? 

Here, Button is defined as a method of a class. Since it's a method, 
the first parameter is the "self" parameter, which will implicitly 
take the value of the class instance that you're calling the Button 
method on."

Thanks Ian. I created the class because I want to use the original example
line 

 UI.Button("button %s" % i, callback)

Is there another way to use the above line without my class definition?
I do feel that my created class does not match well with the above line
because the first item "button %s" does not fit __self__ in the class.
My understanding about the above line code may not correct. This may further
result in not the original bug pops up.

Thanks,


 





More information about the Python-list mailing list