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.. [snip] > File "./ldap-nsc.py", 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="sc-ldap.nsc.com"): > who=""; cred="" > self.server=server > try: > print "LDAP Version", ldap.__version__ > l=ldap.open(server) ^^^^^^^^^^^^^^^^^^ [big snip] > if __name__ == '__main__': > > l = NSCLdap() > l.search() > 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 search. 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 l.search with q.search), and you'll get a NameError instead. -- http://mail.python.org/mailman/listinfo/python-list