Разумевање Питхон-овог система типова је кључно за решавање ове незгодне грешке.
Покушавате да преузмете податке из објекта и уместо тога видите грешку „објекат није подложан претплати“? Проблем је у томе што индексирате погрешан тип података.
Сазнајте све о типовима који се могу претплатити и како да решите ову грешку.
Шта значи „субсцриптабле“ у Питхон-у?
Термин „субсцриптабле“ у Питхон-у означава тип података који чува више вредности којима можете приступити појединачно. Можете приступити одређеној вредности из типа података који се може претплатити преко његовог индекса, користећи угласту заграду ([]).
Ако покушате да приступите ставкама типа података који се не може индексирати, Питхон покреће изузетак „ТипеЕррор: објекат се не може претплатити“.
Следећи типови података се могу претплатити у Питхон-у: листе, стрингови, тупле и речници.
лист_екампле = [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]) # Питхон
Мастер Питхон отклањање грешака
Питхон има глатку криву учења. Али једноставни изузеци могу да вас одбаце ако не знате како да их решите. Научити да отклоните грешке у свом коду и одвојите време за решавање проблема увелико иде у исправљање грешака и изузетака у Питхон кодирању.