Разумевање Питхон-овог система типова је кључно за решавање ове незгодне грешке.

Покушавате да преузмете податке из објекта и уместо тога видите грешку „објекат није подложан претплати“? Проблем је у томе што индексирате погрешан тип података.

Сазнајте све о типовима који се могу претплатити и како да решите ову грешку.

Шта значи „субсцриптабле“ у Питхон-у?

Термин „субсцриптабле“ у Питхон-у означава тип података који чува више вредности којима можете приступити појединачно. Можете приступити одређеној вредности из типа података који се може претплатити преко његовог индекса, користећи угласту заграду ([]).

Ако покушате да приступите ставкама типа података који се не може индексирати, Питхон покреће изузетак „ТипеЕррор: објекат се не може претплатити“.

Следећи типови података се могу претплатити у Питхон-у: листе, стрингови, тупле и речници.

лист_екампле = [1, 3, 5, "Идову"]
стринг_екампле = "Идову Омисола"
тупле_екампле = (1, 3, 5, "Идову")
дицт_екампле = {"име": "Идову", "Језик": "јоруба"}

штампа (пример_пример[

0]) # 1
принт (стринг_екампле[3]) # в
принт (тупле_екампле[1]) # 3
принт (дицт_екампле["име"]) # Идову

Међутим, скупови, цели бројеви, флоат и Булови су недоступни путем индексирања, тако да се не могу претплатити:

флоат_екампле = 12.45
инт_екампле = 12367
боол_екампле = Истина
сет_екампле = {1, 3, 5, "пајтон"}

принт (флоат_екампле[1])
принт (боол_екампле[2])
принт (инт_екампле[2])
принт (сет_екампле[2])

Покушај да се покрене сваки од ових исказа даје изузетак „објекат није претплатљив“:

Решавање изузетка

Решавање изузетка „објекат се не може претплатити“ је лакше када разумете правила за приступ сваком типу података. Зато започните отклањање грешака у Питхон-у тако што ћете проверити тип података објекта који покушавате да индексирате.

флоат_екампле = 12.45
инт_екампле = 12367
боол_екампле = Истина
сет_екампле = {1, 3, 5, "пајтон"}

штампа (тип (флоат_екампле)) #
штампа (тип (инт_екампле)) #
штампа (тип (боол_екампле)) #
штампа (тип (сет_екампле)) #

Када утврдите да тип података не може да се претплати, конвертовање у тип који се може индексирати решава проблем. Ово је згодно ако су подаци из АПИ треће стране. Конвертовање типова података као што су цео број, флоат и Боолеан у стринг чини их подложним претплати:

принт (стр (флоат_екампле)[:2]) # 12
принт (стр (инт_екампле)[:2]) # 12
принт (стр (боол_екампле)[:2]) # Тр

Можете чак манипулисати резултујућим Питхон стринговима колико желите. Ако имате посла са целим бројем и флоат-ом, можда бисте желели да задржите оригинални тип података у излазу. Да бисте то урадили, конвертујте резултујућу вредност у њихов оригинални тип података након што их индексирате као стрингове:

цонвертед_флоат = флоат (стр (флоат_екампле)[:2])
цонвертед_инт = инт (стр (инт_екампле)[:2])

# 12.0 Тип података:
штампа (цонвертед_флоат, ф'Тип података:{типе (цонвертед_флоат)}')

# 12 Тип података:
штампа (цонвертед_инт, ф'Тип података:{типе (цонвертед_инт)}')

Што се тиче скупа, можете га трансформисати у листу. Иако можете конвертовати скуп објекат у листу користећи листа (сет) Питхон у једном реду, ово не чува позиције ставки у резултујућој листи. Да бисте били сигурни да ћете добити листу са очуваним позицијама ставки, користите Питхон-ову ламбда функцију на следећи начин:

сет_екампле = {1, 3, 5, "пајтон"}
конвертовано = сортирано (сет_пример, кључ=ламбда к: (инстанца (к, стр), к))

штампа (конвертовано[3]) # Питхон

Мастер Питхон отклањање грешака

Питхон има глатку криву учења. Али једноставни изузеци могу да вас одбаце ако не знате како да их решите. Научити да отклоните грешке у свом коду и одвојите време за решавање проблема увелико иде у исправљање грешака и изузетака у Питхон кодирању.