Help - Classes and attributes

Christopher Subich spam.csubich+block at
Thu Jul 14 08:08:28 CEST 2005

rh0dium wrote:
> Hi all,
> I believe I am having a fundamental problem with my class and I can't
> seem to figure out what I am doing wrong.  Basically I want a class
> which can do several specific ldap queries.  So in my code I would have
> multiple searches.  But I can't figure out how to do it without it
> barfing..
>   File "./", line 40, in search
>     ldap_result_id = l.search_s(baseDN, searchScope, searchAttrs,
> retrieveAttrs)
> AttributeError: NSCLdap instance has no attribute 'search_s'
> The code is also I believe straight forward..

You're going to kick yourself when you see the mistake.

> import ldap
> class NSCLdap:
>     def __init__(self,server=""):
>         who=""; cred=""
>         self.server=server
>         try:
>             print "LDAP Version", ldap.__version__
[big snip]
> if __name__ == '__main__':
>     l = NSCLdap()

> I would love some pointers - clearly my code thinks that search_s is an
> attribute of my class but it's not..

Ah, but l -is- an instance of your class.  You want l to refer to the 
ldap connection, but you forgot do assign it to self.l -- in __init__, 
you assign l to simply a local variable, which goes poof as soon as 
__init__ returns.  You forgot the self.l throughout both __init__ and 

You get the slighty misleading traceback because there is an "l" defined 
-- it just happens to be the one in globals(), the l = NSCLdap() that 
got assigned when you imported/ran the module.

Replace l = NSCLdap() with q = NSCLdap() (and with, 
and you'll get a NameError instead.

More information about the Python-list mailing list