Python tipa sistēmas izpratne ir galvenais, lai atrisinātu šo sarežģīto kļūdu.
Vai mēģināt izgūt datus no objekta un tā vietā redzat kļūdu "objekts nav abonējams"? Problēma ir tā, ka jūs indeksējat nepareizu datu tipu.
Uzziniet visu par abonējamiem veidiem un šīs kļūdas novēršanu.
Ko Python nozīmē “abonējams”?
Termins "abonējams" Python nozīmē datu tipu, kurā tiek glabātas vairākas vērtības, kurām varat piekļūt atsevišķi. Varat piekļūt noteiktai vērtībai no abonējama datu veida, izmantojot tā indeksu, izmantojot kvadrātiekavās ([]) apzīmējumu.
Ja mēģināt piekļūt vienumiem datu tipā, kas nav indeksējams, Python rada izņēmumu “TypeError: objekts nav abonējams”.
Programmā Python var abonēt šādus datu tipus: saraksti, virknes, koreži un vārdnīcas.
list_example = [1, 3, 5, "Idowu"]
string_example = "Idowu Omisola"
tuple_example = (1, 3, 5, "Idowu")
dict_example = {"vārds": "Idowu", "Valoda": "Joruba"}
drukāt (list_example[0]) # 1
drukāt (string_example[3]) # w
drukāt (tuple_example[1]) # 3
drukāt (dict_example["vārds"]) # Idowu
Tomēr kopas, veseli skaitļi, pludiņi un Būla vērtības nav pieejamas, izmantojot indeksēšanu, tāpēc tās nav abonējamas:
float_example = 12.45
int_example = 12367
bool_example = Taisnība
set_example = {1, 3, 5, "Pitons"}
drukāt (float_example[1])
drukāt (bool_example[2])
drukāt (int_example[2])
drukāt (set_example[2])
Mēģinot palaist katru no šiem priekšrakstiem, tiek izvadīts izņēmums "objekts nav abonējams":
Izņēmuma atrisināšana
Izņēmuma “objekts nav abonējams” atrisināšana ir vienkāršāka, ja izprotat katra datu veida piekļuves noteikumus. Tāpēc sāciet Python atkļūdošanu, pārbaudot tā objekta datu tipu, kuru mēģināt indeksēt.
float_example = 12.45
int_example = 12367
bool_example = Taisnība
set_example = {1, 3, 5, "Pitons"}
drukāt (tips (float_example)) #
drukāt (tips (int_example)) #
drukāt (tips (bool_example)) #
drukāt (tips (set_example)) #
Kad esat noskaidrojis, ka datu tips nav abonējams, tā pārveidošana par indeksējamu tipu atrisina problēmu. Tas ir ērti, ja dati ir no trešās puses API. Datu tipu, piemēram, vesela skaitļa, peldošā un Būla konvertēšana virknē padara tos abonējamus:
drukāt (str (float_example)[:2]) # 12
drukāt (str (int_example)[:2]) # 12
drukāt (str (bool_example)[:2]) # Tr
Jūs pat varat manipulēt ar iegūtajām Python virknēm kā tu vēlies. Ja strādājat ar veseliem skaitļiem un peldēšanu, iespējams, vēlēsities izvadē saglabāt sākotnējo datu tipu. Lai to izdarītu, konvertējiet iegūto vērtību sākotnējā datu tipā pēc to indeksēšanas kā virknes:
converted_float = float (str (float_example)[:2])
converted_int = int (str (int_example)[:2])# 12.0 Datu tips:
print (converted_float, f'Datu tips:{type (converted_float)}')
# 12 Datu tips:
drukāt (converted_int, f'Datu tips:{type (converted_int)}')
Kas attiecas uz komplektu, varat to pārveidot par sarakstu. Lai gan iestatīto objektu var pārvērst sarakstā, izmantojot saraksts (komplekts) Python viena līnija, tas nesaglabā vienumu pozīcijas iegūtajā sarakstā. Lai nodrošinātu, ka saņemat sarakstu ar saglabātajām vienumu pozīcijām, izmantojiet Python lambda funkciju šādi:
set_example = {1, 3, 5, "Pitons"}
konvertēts = sakārtots (set_example, key=lambda x: (instance (x, str), x))
drukāt (konvertēts[3]) # Python
Apgūstiet Python atkļūdošanu
Python ir vienmērīga mācīšanās līkne. Taču vienkārši izņēmumi var tevi nomākt, ja nezināt, kā tos risināt. Mācoties atkļūdot kodu un veltot laiku problēmu risināšanai, var ievērojami novērst Python kodēšanas kļūdas un izņēmumus.