Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > reading help() - newbie question

Reply
Thread Tools

reading help() - newbie question

 
 
Payal
Guest
Posts: n/a
 
      05-31-2010
Hi,
I am trying to learn Python (again) and have some basic doubts which I
hope someone in the list can address. (English is not my first language and I
have no CS background except I can write decent shell scripts)

When I type help(something) e.g. help(list), I see many methods like,
__methodname__(). Are these something special? How do I use them and why
put "__" around them?

One more simple query. Many times I see something like this,
| D.iteritems() -> an iterator over the (key, value) items of D
What is this iterator they are talking about and how do I use these
methods because simly saying D.iteritems() does not work?

Thanks a lot in advance.
With warm regards,
-Payal
--



 
Reply With Quote
 
 
 
 
Gabriel Genellina
Guest
Posts: n/a
 
      06-05-2010
On 31 mayo, 07:19, Payal <(E-Mail Removed)> wrote:

> When I type help(something) e.g. help(list), I see many methods like,
> __methodname__(). Are these something special? How do I use them and why
> put "__" around them?


You may want to install and use "see", a human-friendly replacement of
dir()

So instead of this mess:

py> dir(pencil_case)
['__add__', '__class__', '__contains__', '__delattr__',
'__delitem__', '
__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__',
'__get
item__', '__getslice__', '__gt__', '__hash__', '__iadd__',
'__imul__', '
__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__',
'__ne__
', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__setslice__',
'__str__', 'a
ppend', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse'
, 'sort']

you get this instead:

py> see(pencil_case)
[] in + +=
* *=
< <= == !=
> >=

hash() help() iter() len() repr()
reversed()
str() .append() .count() .extend() .index()
.insert() .pop() .remove() .reverse() .sort()


For us mere mortals, it's a lot more readable.
"see" is available at http://github.com/inky/see


--
Gabriel Genellina
 
Reply With Quote
 
 
 
 
Lie Ryan
Guest
Posts: n/a
 
      06-05-2010
On 05/31/10 20:19, Payal wrote:
> Hi,
> I am trying to learn Python (again) and have some basic doubts which I
> hope someone in the list can address. (English is not my first language and I
> have no CS background except I can write decent shell scripts)
>
> When I type help(something) e.g. help(list), I see many methods like,
> __methodname__(). Are these something special? How do I use them and why
> put "__" around them?


Yes, the double-underscore are hooks to the various python protocols.
They defines, among all, operator overloading, class construction and
initialization, iterator protocol, descriptor protocol, type-casting, etc.

A typical usage of these double-underscore is to create a class that
overrides these functions, e.g.:

class Comparable(object):
def __init__(self, value):
self.value = value
def __lt__(self, other):
return self.value > other.value
def __gt__(self, other):
return self.value < other.value
def __str__(self):
return "Value: " + self.value

You should never create your own double-underscore method, just
override/use the ones that Python provide.

> One more simple query. Many times I see something like this,
> | D.iteritems() -> an iterator over the (key, value) items of D
> What is this iterator they are talking about and how do I use these
> methods because simly saying D.iteritems() does not work?
>


read about iterator protocol. Basically, the iterator protocol allows
for-looping over a user-defined class (e.g. for emulating a collection).
D.iteritems() returns an iterator object, which for-loop knows how to
iterate over to generate the stream of (key, value) pairs.
 
Reply With Quote
 
Lie Ryan
Guest
Posts: n/a
 
      06-05-2010
On 06/05/10 21:24, Lie Ryan wrote:
> On 05/31/10 20:19, Payal wrote:
>> Hi,
>> I am trying to learn Python (again) and have some basic doubts which I
>> hope someone in the list can address. (English is not my first language and I
>> have no CS background except I can write decent shell scripts)
>>
>> When I type help(something) e.g. help(list), I see many methods like,
>> __methodname__(). Are these something special? How do I use them and why
>> put "__" around them?

>
> Yes, the double-underscore are hooks to the various python protocols.
> They defines, among all, operator overloading, class construction and
> initialization, iterator protocol, descriptor protocol, type-casting, etc.
>
> A typical usage of these double-underscore is to create a class that
> overrides these functions, e.g.:
>
> class Comparable(object):
> def __init__(self, value):
> self.value = value
> def __lt__(self, other):
> return self.value > other.value
> def __gt__(self, other):
> return self.value < other.value
> def __str__(self):
> return "Value: " + self.value
>
> You should never create your own double-underscore method, just
> override/use the ones that Python provide.


Ok, I just read what I wrote again and I noticed that the example isn't
complete enough to illustrate what I'm talking about, so:

class Comparable(object):
def __init__(self, value):
self.value = value
def __lt__(self, other):
return self.value > other.value
def __gt__(self, other):
return self.value < other.value
def __str__(self):
return "Value: " + self.value

a = Comparable(10) # a.value = 10
b = Comparable(20) # b.value = 20

# the < operator calls __lt__ special method and this
# prints False, because a.value > other.value is False
print a < b

# prints "Value: 10" since 'print' statement calls str() builtin
# function which calls __str__ to turn objects into a string
print a
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Newbie question.. reading location header john Java 11 02-10-2011 09:22 PM
reading image files from applet -- newbie question Ed Java 4 07-28-2005 02:13 PM
Stupid Newbie Question Concerning CGI and Reading Forward Slashes Jatinder Singh Python 4 06-01-2005 12:33 PM
Newbie question - reading delimited files and printing... Markis Landis Gardner Java 6 12-25-2003 03:29 AM
dumb newbie question (or newbie dumb question) Jerry C. Perl Misc 8 11-23-2003 04:11 AM



Advertisments