2017-04-19 3 views
0

Ich habe dieses Stück Code Teil eines Python-Skript muß ich LDAP-Attribute der Benutzer abfragen:Create-Methode aus vorhandenen Python-Code

try: 
    ldap_result_id = l.search(baseDN, searchScope, get_searchFilter(adname), 
retrieveAttributes) 
    result_set = [] 
    while 1: 
     result_type, result_data = l.result(ldap_result_id, 0) 
     if (result_data == []): 
      break 
     else: 
      ## you could do whatever you want with the individual entry 
      ## The appending to list is just for illustration. 
      if result_type == ldap.RES_SEARCH_ENTRY: 
       result_set.append(result_data) 
    for x in result_set: 
     print x 
except ldap.LDAPError, e: 
    print e 
    print ldap.LDAPError 

Wie ich das oben reinigen kann und es in eine wiederverwendbare Funktion zu machen (oder ist Methode die passendere Terminologie)?

+0

Da Sie nicht beabsichtigen, Klassen zu produzieren „Funktion“ ist die richtigere und die einzig richtige Terminologie. – DyZ

+0

@DYZ Falls ich anfange, ** Klassen ** zu verwenden, wäre es dann eine ** Methode **? – Xtos

+0

Nur wenn es ein Teil der Klasse ist. – DyZ

Antwort

1

Identifizieren Sie die Variablen, die sich ändern können, und machen Sie diese Argumente zu einer Funktion. Lassen Sie den Druck und die Ausnahmebehandlung außerhalb der Funktion, wenn Sie etwas Vernünftiges mit Ausnahme tun können:

def fn(baseDN, searchScope, adname, retrieveAttributes): 
    ldap_result_id = l.search(baseDN, searchScope, get_searchFilter(adname), 
retrieveAttributes) 
    result_set = [] 
    while 1: 
     result_type, result_data = l.result(ldap_result_id, 0) 
     if (result_data == []): 
      break 
     else: 
      ## you could do whatever you want with the individual entry 
      ## The appending to list is just for illustration. 
      if result_type == ldap.RES_SEARCH_ENTRY: 
       result_set.append(result_data) 
    return result_set 

baseDN = ??? 
searchScope = ??? 
adname = ??? 
retrieveAttributes = ??? 
try: 
    for x in fn(baseDN, searchScope, adname, retrieveAttributes): 
     print x 
except ldap.LDAPError, e: 
    print e 
    print ldap.LDAPError 
+0

Ich nehme an, 'BaseDN = ???, SearchScope = ???, Adname = ??? und retrieveAttributes = ??? 'sollte im Skript weggelassen werden? – Xtos

+0

Dies sind Variablen, die bereitgestellt werden müssen, z. Benutzereingabe, aus einem Datenspeicher gelesen, von einer anderen Anwendung weitergegeben usw. – AChampion

+0

Gotcha! Ja, ich habe die bereits in meinem Python-Skript in einem anderen Abschnitt zur Verfügung gestellt! Ihre Lösung hat wunderbar funktioniert! – Xtos

Verwandte Themen