{"id":35772,"date":"2025-12-03T19:31:19","date_gmt":"2025-12-03T16:31:19","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/"},"modified":"2025-12-03T19:31:19","modified_gmt":"2025-12-03T16:31:19","slug":"pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/","title":{"rendered":"Python&#8217;da &#8216;int&#8217; Object Has No Attribute &#8216;title&#8217; Hatas\u0131 Nas\u0131l Giderilir?"},"content":{"rendered":"<p><body><\/p>\n<p>Python&#8217;da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan <code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir. <\/p>\n<p>Bir Python geli\u015ftiricisi olarak, kodunuzu sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131z\u0131 d\u00fc\u015f\u00fcn\u00fcrken aniden bir hata mesaj\u0131yla kar\u015f\u0131la\u015fmak hi\u00e7 de yabanc\u0131 bir durum de\u011fildir. Bu hatalardan biri de s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan <code>AttributeError<\/code>&#8216;d\u0131r. \u00d6zellikle <code>'int' object has no attribute 'title'<\/code> \u015feklindeki hata, genellikle yeni ba\u015flayanlardan deneyimli programc\u0131lara kadar herkesin ba\u015f\u0131na gelebilir ve genellikle basit bir g\u00f6zden ka\u00e7\u0131rman\u0131n veya veri tipi beklentisindeki bir uyu\u015fmazl\u0131\u011f\u0131n sonucudur.<\/p>\n<p>Peki, bu hata tam olarak ne anlama geliyor? Python&#8217;da her \u015fey bir &#8220;nesne&#8221;dir. Bu nesnelerin kendine \u00f6zg\u00fc \u00f6zellikleri (attributes) ve yapabildikleri eylemler (methods) vard\u0131r. \u00d6rne\u011fin, bir &#8220;string&#8221; (metin) nesnesinin metni b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harfe d\u00f6n\u00fc\u015ft\u00fcrme, bo\u015fluklar\u0131 kald\u0131rma veya belirli karakterleri arama gibi bir\u00e7ok metodu bulunur. <code>title()<\/code> metodu da bunlardan biridir ve bir string i\u00e7indeki her kelimenin ilk harfini b\u00fcy\u00fck harfe \u00e7evirmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, &#8220;merhaba d\u00fcnya&#8221; stringine <code>.title()<\/code> uygulad\u0131\u011f\u0131n\u0131zda &#8220;Merhaba D\u00fcnya&#8221; sonucunu al\u0131rs\u0131n\u0131z.<\/p>\n<p>Ancak, Python&#8217;da &#8220;integer&#8221; (tam say\u0131) bir nesnenin do\u011fas\u0131 gere\u011fi metin i\u015fleme yetenekleri yoktur. Bir tam say\u0131, matematiksel i\u015flemler yapmak i\u00e7in tasarlanm\u0131\u015ft\u0131r; harfleri b\u00fcy\u00fctmek veya k\u00fc\u00e7\u00fcltmek gibi bir kavram onun i\u00e7in anlams\u0131zd\u0131r. \u0130\u015fte bu y\u00fczden, bir tam say\u0131 nesnesi \u00fczerinde <code>title()<\/code> gibi bir string metodunu \u00e7a\u011f\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda, Python size bu metodun mevcut olmad\u0131\u011f\u0131n\u0131 bildiren bir <code>AttributeError<\/code> f\u0131rlat\u0131r. Basit\u00e7e s\u00f6ylemek gerekirse, Python size &#8220;Bu nesnenin b\u00f6yle bir \u00f6zelli\u011fi veya metodu yok!&#8221; demektedir.<\/p>\n<p>Bu hatan\u0131n temelinde yatan sorun, kodunuzun bir noktada bir de\u011feri &#8220;metin&#8221; (string) olarak beklerken, asl\u0131nda ona &#8220;say\u0131&#8221; (integer) tipinde bir de\u011fer ula\u015ft\u0131rman\u0131zd\u0131r. Bu durum, \u00f6zellikle kullan\u0131c\u0131dan giri\u015f ald\u0131\u011f\u0131n\u0131zda, harici dosyalardan veri okudu\u011funuzda veya API&#8217;lerden veri \u00e7ekerken veri tiplerinin bekledi\u011finizden farkl\u0131 geldi\u011fi senaryolarda yayg\u0131n olarak g\u00f6r\u00fcl\u00fcr. Bu hatay\u0131 gidermek i\u00e7in \u00f6ncelikle hatan\u0131n nerede ve neden olu\u015ftu\u011funu anlamak, ard\u0131ndan da do\u011fru veri tipine d\u00f6n\u00fc\u015f\u00fcm yapmak veya veri i\u015fleme mant\u0131\u011f\u0131n\u0131 g\u00f6zden ge\u00e7irmek gerekir. Bu makalede, bu s\u00fcreci ad\u0131m ad\u0131m inceleyecek ve hatay\u0131 kal\u0131c\u0131 olarak nas\u0131l \u00e7\u00f6zebilece\u011finizi \u00f6\u011freneceksiniz.<\/p>\n<h2>Temel Kavramlar: Python&#8217;da Veri Tipleri ve String Metodlar\u0131 Neden \u00d6nemli?<\/h2>\n<p>Python&#8217;da etkili bir \u015fekilde kod yazabilmek ve kar\u015f\u0131la\u015f\u0131lan hatalar\u0131 anlay\u0131p \u00e7\u00f6zebilmek i\u00e7in temel veri tiplerini ve bunlar\u0131n davran\u0131\u015flar\u0131n\u0131 iyi kavramak \u015fartt\u0131r. Python, dinamik tipli bir dil olmas\u0131na ra\u011fmen, her de\u011fi\u015fkenin arkas\u0131nda belirli bir veri tipi yatar ve bu tip, o de\u011fi\u015fken \u00fczerinde hangi i\u015flemlerin yap\u0131labilece\u011fini belirler. <code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131 da tam olarak bu temel anlay\u0131\u015f eksikli\u011finden kaynaklan\u0131r.<\/p>\n<h3>Python&#8217;daki Veri Tipleri: Her Nesnenin Bir Kimli\u011fi Vard\u0131r<\/h3>\n<p>Python&#8217;da en s\u0131k kullan\u0131lan temel veri tiplerinden baz\u0131lar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong><code>int<\/code> (Integer &#8211; Tam Say\u0131):<\/strong> Negatif veya pozitif tam say\u0131lar\u0131 temsil eder. \u00d6rne\u011fin: <code>5<\/code>, <code>-100<\/code>, <code>0<\/code>.<\/li>\n<li><strong><code>float<\/code> (Floating-Point Number &#8211; Ondal\u0131kl\u0131 Say\u0131):<\/strong> Ondal\u0131kl\u0131 say\u0131lar\u0131 temsil eder. \u00d6rne\u011fin: <code>3.14<\/code>, <code>-0.5<\/code>.<\/li>\n<li><strong><code>str<\/code> (String &#8211; Metin):<\/strong> Tek t\u0131rnak (<code>'<\/code>), \u00e7ift t\u0131rnak (<code>\"<\/code>) veya \u00fc\u00e7l\u00fc t\u0131rnak (<code>'''<\/code>, <code>\"\"\"<\/code>) aras\u0131na yaz\u0131lan metinleri temsil eder. \u00d6rne\u011fin: <code>\"Merhaba\"<\/code>, <code>'Python'<\/code>.<\/li>\n<li><strong><code>bool<\/code> (Boolean &#8211; Mant\u0131ksal):<\/strong> Sadece iki de\u011feri vard\u0131r: <code>True<\/code> (Do\u011fru) veya <code>False<\/code> (Yanl\u0131\u015f).<\/li>\n<li><strong><code>list<\/code> (Liste):<\/strong> S\u0131ral\u0131, de\u011fi\u015ftirilebilir (mutable) ve farkl\u0131 veri tiplerini i\u00e7erebilen bir eleman koleksiyonudur. \u00d6rne\u011fin: <code>[1, \"elma\", True]<\/code>.<\/li>\n<li><strong><code>tuple<\/code> (Demet):<\/strong> S\u0131ral\u0131, de\u011fi\u015ftirilemez (immutable) ve farkl\u0131 veri tiplerini i\u00e7erebilen bir eleman koleksiyonudur. \u00d6rne\u011fin: <code>(1, \"armut\")<\/code>.<\/li>\n<li><strong><code>dict<\/code> (Dictionary &#8211; S\u00f6zl\u00fck):<\/strong> Anahtar-de\u011fer \u00e7iftlerinden olu\u015fan, s\u0131ras\u0131z ve de\u011fi\u015ftirilebilir bir koleksiyondur. \u00d6rne\u011fin: <code>{\"ad\": \"Ali\", \"ya\u015f\": 30}<\/code>.<\/li>\n<\/ul>\n<p>Her veri tipi, kendine \u00f6zg\u00fc bir dizi metoda ve i\u015fleme sahiptir. \u00d6rne\u011fin, bir <code>int<\/code> \u00fczerinde matematiksel toplama, \u00e7\u0131karma yapabilirken, bir <code>str<\/code> \u00fczerinde metin birle\u015ftirme (concatenation) veya harf de\u011fi\u015ftirme gibi i\u015flemler yapabilirsiniz. \u0130\u015fte bu noktada <code>title()<\/code> metodu gibi spesifik string metodlar\u0131 devreye girer.<\/p>\n<h3>String Metodlar\u0131 ve <code>title()<\/code> Metodunun G\u00f6revi<\/h3>\n<p><code>title()<\/code> metodu, Python&#8217;daki string veri tipine ait bir\u00e7ok kullan\u0131\u015fl\u0131 metoddan sadece biridir. Bu metodun ana g\u00f6revi, uyguland\u0131\u011f\u0131 string i\u00e7erisindeki her kelimenin ilk harfini b\u00fcy\u00fck harfe, di\u011fer harflerini ise k\u00fc\u00e7\u00fck harfe d\u00f6n\u00fc\u015ft\u00fcrmektir. \u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code class=\"language-python\">\nmetin = \"merhaba python d\u00fcnyas\u0131\"\nbaslik_metin = metin.title()\nprint(baslik_metin) # \u00c7\u0131kt\u0131: Merhaba Python D\u00fcnyas\u0131\n\nmetin2 = \"BU B\u0130R TEST C\u00dcMLES\u0130D\u0130R.\"\nbaslik_metin2 = metin2.title()\nprint(baslik_metin2) # \u00c7\u0131kt\u0131: Bu Bir Test C\u00fcmlesidir.\n    <\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>title()<\/code> metodu sadece string nesneleri \u00fczerinde anlaml\u0131 bir i\u015flem yapar. Bir tam say\u0131 (<code>int<\/code>) nesnesinin b\u00f6yle bir metotla ili\u015fkilendirilmesi mant\u0131ks\u0131zd\u0131r, \u00e7\u00fcnk\u00fc bir say\u0131n\u0131n \"kelimeleri\" veya \"b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harfleri\" yoktur. Dolay\u0131s\u0131yla, bir <code>int<\/code> nesnesi \u00fczerinde <code>.title()<\/code> \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, Python size hakl\u0131 olarak b\u00f6yle bir \u00f6zelli\u011fin mevcut olmad\u0131\u011f\u0131n\u0131 bildiren <code>AttributeError<\/code> hatas\u0131n\u0131 f\u0131rlat\u0131r.<\/p>\n<p>Bu temel ayr\u0131m\u0131 anlamak, Python'da veri i\u015flerken kar\u015f\u0131la\u015fabilece\u011finiz bir\u00e7ok tipiyle ilgili hatay\u0131 \u00f6nlemenin ilk ad\u0131m\u0131d\u0131r. Her zaman elinizdeki verinin tipini sorgulamak ve o tipe uygun metodlar\u0131 kullanmak, kodunuzu daha sa\u011flam ve hatas\u0131z hale getirecektir. Bir sonraki b\u00f6l\u00fcmde, bu hatan\u0131n ger\u00e7ek senaryolarda nas\u0131l ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve nas\u0131l \u00e7\u00f6z\u00fclebilece\u011fini inceleyece\u011fiz.<\/p>\n<h2>Vaka Analizi: 'int' Object Has No Attribute 'title' Hatas\u0131 Ne Zaman Ortaya \u00c7\u0131kar?<\/h2>\n<p><code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131, genellikle veri ak\u0131\u015f\u0131n\u0131n beklenenden farkl\u0131 bir tipte gelmesi veya geli\u015ftiricinin veri tipi konusunda yanl\u0131\u015f bir varsay\u0131mda bulunmas\u0131 sonucunda ortaya \u00e7\u0131kar. Bu hatan\u0131n s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131 baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131 inceleyelim.<\/p>\n<h3>Senaryo 1: Kullan\u0131c\u0131dan Al\u0131nan Giri\u015fin Yanl\u0131\u015f \u0130\u015flenmesi<\/h3>\n<p>Python'da <code>input()<\/code> fonksiyonu ile kullan\u0131c\u0131dan al\u0131nan t\u00fcm giri\u015fler, say\u0131sal bir de\u011fer girilse bile, her zaman string (<code>str<\/code>) tipindedir. E\u011fer bu string'i hemen bir say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcr ve daha sonra metin i\u015fleme metotlar\u0131 kullanmaya kalkarsan\u0131z, bu hatayla kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z.<\/p>\n<pre><code class=\"language-python\">\n# Hatal\u0131 Senaryo: Kullan\u0131c\u0131n\u0131n ya\u015f\u0131n\u0131 al\u0131p title() uygulamaya \u00e7al\u0131\u015fmak\nkullanici_yasi_str = input(\"L\u00fctfen ya\u015f\u0131n\u0131z\u0131 giriniz: \") # input her zaman string d\u00f6nd\u00fcr\u00fcr\nkullanici_yasi_int = int(kullanici_yasi_str) # String'i int'e \u00e7eviriyoruz\n\n# Hata burada olu\u015facak! \u00c7\u00fcnk\u00fc kullanici_yasi_int art\u0131k bir int\n# int nesnesinin title() metodu yoktur.\ntry:\n    kullanici_yasi_int.title()\nexcept AttributeError as e:\n    print(f\"Hata olu\u015ftu: {e}\") # AttributeError: 'int' object has no attribute 'title'\n    print(f\"Hatan\u0131n kayna\u011f\u0131: '{kullanici_yasi_int}' de\u011fi\u015fkeninin tipi {type(kullanici_yasi_int)}\")\n\n# Do\u011fru yakla\u015f\u0131m: E\u011fer title() kullanmak istiyorsan\u0131z, string \u00fczerinde uygulay\u0131n\nprint(f\"Do\u011fru kullan\u0131m: '{kullanici_yasi_str}' stringinin tipi {type(kullanici_yasi_str)}\")\nprint(f\"Ya\u015f\u0131n ba\u015fl\u0131k format\u0131: {kullanici_yasi_str.title()}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryoda, kullan\u0131c\u0131 <code>25<\/code> girse bile, <code>kullanici_yasi_int<\/code> de\u011fi\u015fkeni bir tam say\u0131 (<code>25<\/code>) oldu\u011fu i\u00e7in <code>.title()<\/code> metodu kullan\u0131lamaz. E\u011fer ama\u00e7 ya\u015f\u0131n string temsilini ba\u015fl\u0131k format\u0131na \u00e7evirmekse, bu i\u015flem <code>int()<\/code> d\u00f6n\u00fc\u015f\u00fcm\u00fcnden \u00f6nce, orijinal string \u00fczerinde yap\u0131lmal\u0131d\u0131r.<\/p>\n<h3>Senaryo 2: Dosyalardan veya Veritabanlar\u0131ndan Okunan Veri<\/h3>\n<p>CSV, JSON, XML dosyalar\u0131ndan veya bir veritaban\u0131ndan veri \u00e7ekerken, al\u0131nan verinin tipi beklenenden farkl\u0131 olabilir. \u00d6rne\u011fin, bir CSV dosyas\u0131ndaki \"\u00dcr\u00fcn Kodu\" s\u00fctunu say\u0131sal de\u011ferler i\u00e7ermesine ra\u011fmen, Python varsay\u0131lan olarak bunlar\u0131 string olarak okuyabilir. Ancak, bir noktada bu string'leri say\u0131ya d\u00f6n\u00fc\u015ft\u00fcr\u00fcrseniz ve sonra yanl\u0131\u015fl\u0131kla string metodu uygulamaya \u00e7al\u0131\u015f\u0131rsan\u0131z hata al\u0131rs\u0131n\u0131z.<\/p>\n<pre><code class=\"language-python\">\n# Hatal\u0131 Senaryo: Dosyadan okunan veride tip hatas\u0131\nurun_kodlari = [\"101\", \"205\", \"312A\", \"400\"] # Diyelim ki bunlar bir dosyadan okundu\n\n# Hatal\u0131 d\u00f6ng\u00fc: String'i int'e \u00e7evirip sonra title() uygulamaya \u00e7al\u0131\u015fmak\nfor kod_str in urun_kodlari:\n    try:\n        # Hatal\u0131 varsay\u0131m: t\u00fcm kodlar say\u0131sal ve int'e \u00e7evriliyor\n        kod_int = int(kod_str) # E\u011fer kod_str \"312A\" ise burada ValueError olu\u015fur\n        # title() int \u00fczerinde \u00e7al\u0131\u015fmaz\n        print(kod_int.title())\n    except ValueError:\n        print(f\"'{kod_str}' say\u0131ya \u00e7evrilemedi, atlan\u0131yor.\")\n    except AttributeError as e:\n        print(f\"'{kod_str}' \u00fczerinde title() kullan\u0131lamad\u0131. Hata: {e}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, e\u011fer <code>kod_str<\/code> de\u011fi\u015fkeni \"312A\" gibi say\u0131sal olmayan bir string olursa, <code>int(kod_str)<\/code> ifadesi <code>ValueError<\/code> hatas\u0131 f\u0131rlat\u0131r. Ama e\u011fer t\u00fcm kodlar say\u0131sal olsayd\u0131 (\u00f6rne\u011fin <code>[\"101\", \"205\", \"400\"]<\/code>), o zaman <code>kod_int.title()<\/code> ifadesi <code>AttributeError<\/code> f\u0131rlat\u0131rd\u0131, \u00e7\u00fcnk\u00fc <code>kod_int<\/code> bir <code>int<\/code> nesnesi olacakt\u0131.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Veri kayna\u011f\u0131n\u0131zdan gelen verinin tipini her zaman do\u011frulay\u0131n. Harici kaynaklardan al\u0131nan verilerde tip tutars\u0131zl\u0131klar\u0131 yayg\u0131nd\u0131r ve bu t\u00fcr hatalar\u0131n ana nedenidir. <code>type()<\/code> fonksiyonu ve <code>isinstance()<\/code> fonksiyonu bu do\u011frulamada en b\u00fcy\u00fck yard\u0131mc\u0131lar\u0131n\u0131zd\u0131r.<\/div>\n<h3>Senaryo 3: Listeler veya Di\u011fer Koleksiyonlarda Kar\u0131\u015f\u0131k Veri Tipleri<\/h3>\n<p>Bazen bir liste i\u00e7inde hem string hem de integer gibi farkl\u0131 tiplerde veriler bulunabilir. E\u011fer bu liste \u00fczerinde genelle\u015ftirilmi\u015f bir i\u015flem yapmaya \u00e7al\u0131\u015f\u0131rken veri tiplerini kontrol etmezseniz, yine <code>AttributeError<\/code> ile kar\u015f\u0131la\u015fabilirsiniz.<\/p>\n<pre><code class=\"language-python\">\n# Hatal\u0131 Senaryo: Kar\u0131\u015f\u0131k tipte bir listede title() uygulamaya \u00e7al\u0131\u015fmak\nkarisik_liste = [\"elma\", 123, \"armut\", 45.6, \"muz\"]\n\nfor item in karisik_liste:\n    try:\n        # title() sadece stringler i\u00e7in ge\u00e7erlidir\n        print(item.title())\n    except AttributeError as e:\n        print(f\"'{item}' \u00fczerinde title() kullan\u0131lamad\u0131. Tipi: {type(item)}. Hata: {e}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>\"elma\"<\/code> ve <code>\"muz\"<\/code> stringleri i\u00e7in <code>.title()<\/code> metodu sorunsuz \u00e7al\u0131\u015f\u0131rken, <code>123<\/code> (int) ve <code>45.6<\/code> (float) i\u00e7in <code>AttributeError<\/code> hatas\u0131 f\u0131rlat\u0131lacakt\u0131r. Bu t\u00fcr senaryolarda, i\u015flemi uygulamadan \u00f6nce \u00f6\u011fenin tipini kontrol etmek esast\u0131r.<\/p>\n<p>Bu vaka analizleri, hatan\u0131n genellikle veri tipi beklentileri ile ger\u00e7ek veri tipleri aras\u0131ndaki uyu\u015fmazl\u0131ktan kaynakland\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Bir sonraki b\u00f6l\u00fcmde, bu hatay\u0131 ad\u0131m ad\u0131m nas\u0131l te\u015fhis edece\u011finizi ve d\u00fczeltece\u011finizi ele alaca\u011f\u0131z.<\/p>\n<h2>Ad\u0131m Ad\u0131m \u00c7\u00f6z\u00fcm: Hatay\u0131 Te\u015fhis Etme ve D\u00fczeltme Y\u00f6ntemleri<\/h2>\n<p><code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131 ile kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda paniklemeye gerek yok. Python'\u0131n hata izi (traceback) genellikle hatan\u0131n nerede ve neden olu\u015ftu\u011fu hakk\u0131nda size de\u011ferli bilgiler verir. Bu b\u00f6l\u00fcm, hatay\u0131 ad\u0131m ad\u0131m te\u015fhis etme ve etkili bir \u015fekilde d\u00fczeltme y\u00f6ntemlerini ele alacakt\u0131r.<\/p>\n<h3>Ad\u0131m 1: Hatay\u0131 Anlama ve Yerini Belirleme (Traceback Okuma)<\/h3>\n<p>Bir hata mesaj\u0131 ald\u0131\u011f\u0131n\u0131zda, ilk yapman\u0131z gereken \u015fey Python'\u0131n traceback'ini (hata izini) dikkatlice okumakt\u0131r. Traceback, hatan\u0131n hangi dosyada, hangi sat\u0131rda ve hangi fonksiyon \u00e7a\u011fr\u0131s\u0131 s\u0131ras\u0131nda meydana geldi\u011fini g\u00f6sterir. En \u00f6nemli bilgi genellikle traceback'in en alt sat\u0131r\u0131nda yer al\u0131r, \u00e7\u00fcnk\u00fc bu, hatan\u0131n do\u011frudan meydana geldi\u011fi yerdir.<\/p>\n<pre><code class=\"language-python\">\n# Hata \u00fcreten kod par\u00e7as\u0131\ndef formatla_veri(veri):\n    # Varsay\u0131m: 'veri' her zaman string olacak\n    return veri.title()\n\nsayisal_id = 12345\nformatla_veri(sayisal_id)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir traceback g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-text\">\nTraceback (most recent call last):\n  File \"main.py\", line 8, in <module>\n    formatla_veri(sayisal_id)\n  File \"main.py\", line 4, in formatla_veri\n    return veri.title()\nAttributeError: 'int' object has no attribute 'title'\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu traceback bize \u015funu anlat\u0131yor:<\/p>\n<ul>\n<li>Hata, <code>main.py<\/code> dosyas\u0131nda meydana geldi.<\/li>\n<li>Mod\u00fcl seviyesinde (<code><module><\/code>), 8. sat\u0131rda <code>formatla_veri(sayisal_id)<\/code> \u00e7a\u011fr\u0131s\u0131 yap\u0131ld\u0131.<\/li>\n<li><code>formatla_veri<\/code> fonksiyonunun i\u00e7inde, 4. sat\u0131rda <code>return veri.title()<\/code> ifadesinde <code>AttributeError<\/code> olu\u015ftu.<\/li>\n<li>Hatan\u0131n kendisi: <code>'int' object has no attribute 'title'<\/code>.<\/li>\n<\/ul>\n<p>Bu bilgilerle, hatan\u0131n <code>formatla_veri<\/code> fonksiyonu i\u00e7inde, <code>veri<\/code> de\u011fi\u015fkeni \u00fczerinde <code>.title()<\/code> metodunu \u00e7a\u011f\u0131rmaya \u00e7al\u0131\u015f\u0131rken olu\u015ftu\u011funu anlar\u0131z. \u015eimdi s\u0131ra bu <code>veri<\/code> de\u011fi\u015fkeninin tipini kontrol etmeye geldi.<\/p>\n<h3>Ad\u0131m 2: Veri Tipini Kontrol Etme (<code>type()<\/code> ve <code>isinstance()<\/code> Kullan\u0131m\u0131)<\/h3>\n<p>Hatan\u0131n kayna\u011f\u0131n\u0131 belirledikten sonra, hataya neden olan de\u011fi\u015fkenin ger\u00e7ek veri tipini \u00f6\u011frenmek \u00e7ok kolayd\u0131r. Bunun i\u00e7in <code>type()<\/code> fonksiyonunu kullanabiliriz.<\/p>\n<pre><code class=\"language-python\">\ndef formatla_veri_guvenli(veri):\n    print(f\"Fonksiyona gelen 'veri' de\u011fi\u015fkeninin tipi: {type(veri)}\")\n    if isinstance(veri, str): # isinstance ile tip kontrol\u00fc\n        return veri.title()\n    else:\n        # Hata mesaj\u0131 yerine uygun bir i\u015flem yapabiliriz\n        print(f\"Hata: '{veri}' bir string de\u011fil, title() uygulanamaz.\")\n        return None # Veya veri tipine uygun ba\u015fka bir d\u00f6n\u00fc\u015f\u00fcm yapabiliriz\n\nsayisal_id = 12345\nmetinsel_isim = \"john doe\"\n\nformatla_veri_guvenli(sayisal_id)\nprint(\"-\" * 20)\nformatla_veri_guvenli(metinsel_isim)\n    <\/pre>\n<p><\/code><\/p>\n<p>\u00c7\u0131kt\u0131:<\/p>\n<pre><code class=\"language-text\">\nFonksiyona gelen 'veri' de\u011fi\u015fkeninin tipi: <class 'int'>\nHata: '12345' bir string de\u011fil, title() uygulanamaz.\n--------------------\nFonksiyona gelen 'veri' de\u011fi\u015fkeninin tipi: <class 'str'>\n    <\/pre>\n<p><\/code><\/p>\n<p><code>isinstance(nesne, tip)<\/code> fonksiyonu, bir nesnenin belirli bir tipte olup olmad\u0131\u011f\u0131n\u0131 kontrol etmenin Pythonik ve okunabilir bir yoludur. Bu, \u00f6zellikle farkl\u0131 tiplerde veri gelebilecek durumlarda \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Ad\u0131m 3: Tip D\u00f6n\u00fc\u015f\u00fcm\u00fc (Type Casting)<\/h3>\n<p>E\u011fer bir <code>int<\/code> nesnesi \u00fczerinde <code>title()<\/code> metodunu kullanmaya \u00e7al\u0131\u015f\u0131yorsan\u0131z ve amac\u0131n\u0131z asl\u0131nda bu say\u0131n\u0131n metinsel temsilinin ba\u015fl\u0131k format\u0131nda olmas\u0131n\u0131 sa\u011flamaksa, yapman\u0131z gereken \u015fey say\u0131y\u0131 string'e d\u00f6n\u00fc\u015ft\u00fcrmektir. Bunu <code>str()<\/code> fonksiyonu ile yapabilirsiniz.<\/p>\n<pre><code class=\"language-python\">\n# Hatal\u0131 kullan\u0131m:\nsayi = 123\n# print(sayi.title()) # AttributeError\n\n# Do\u011fru kullan\u0131m: Say\u0131y\u0131 string'e d\u00f6n\u00fc\u015ft\u00fcr\u00fcn\nsayi_str = str(sayi)\nprint(sayi_str.title()) # \u00c7\u0131kt\u0131: 123\n\n# Fonksiyon i\u00e7inde uygulama\ndef formatla_sayisal_veri_olarak(sayi_int):\n    return str(sayi_int).title()\n\nprint(formatla_sayisal_veri_olarak(56789)) # \u00c7\u0131kt\u0131: 56789\n    <\/pre>\n<p><\/code><\/p>\n<p>Unutmay\u0131n ki <code>str(sayi).title()<\/code> ifadesi, say\u0131n\u0131n kendi de\u011ferini de\u011fi\u015ftirmeyecektir; sadece o say\u0131n\u0131n string temsilinin ba\u015fl\u0131k format\u0131ndaki halini d\u00f6nd\u00fcrecektir. \"123\" gibi bir say\u0131n\u0131n \"123\" olarak ba\u015fl\u0131k format\u0131nda kalmas\u0131 normaldir, \u00e7\u00fcnk\u00fc rakamlar\u0131n b\u00fcy\u00fck harf kar\u015f\u0131l\u0131\u011f\u0131 yoktur. Ancak \"101 dalma\u00e7yal\u0131\" gibi bir string'i say\u0131ya \u00e7evirip sonra tekrar string'e \u00e7evirip <code>title()<\/code> uygulayabilseydiniz, bu metodu g\u00f6rm\u00fc\u015f olacakt\u0131n\u0131z. Esas senaryo, asl\u0131nda bir string beklerken int gelmesi durumlar\u0131d\u0131r.<\/p>\n<h3>Ad\u0131m 4: Veri Giri\u015fi Do\u011frulama ve \u00d6nleyici Tedbirler<\/h3>\n<p>En iyi \u00e7\u00f6z\u00fcm, hatan\u0131n hi\u00e7 olu\u015fmamas\u0131n\u0131 sa\u011flamakt\u0131r. Bu da veri giri\u015fini do\u011frulamak ve veri tiplerini m\u00fcmk\u00fcn oldu\u011funca erken a\u015famada kontrol etmekle m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<pre><code class=\"language-python\">\ndef kullanici_adi_al():\n    while True:\n        isim = input(\"L\u00fctfen ad\u0131n\u0131z\u0131 giriniz: \")\n        if isim.strip().isalpha(): # Sadece harf i\u00e7erdi\u011fini kontrol et\n            return isim.title()\n        else:\n            print(\"Ge\u00e7ersiz giri\u015f. L\u00fctfen sadece harflerden olu\u015fan bir isim giriniz.\")\n\n# kullanici_adi = kullanici_adi_al()\n# print(f\"Merhaba, {kullanici_adi}!\")\n\ndef fiyat_al():\n    while True:\n        fiyat_str = input(\"L\u00fctfen \u00fcr\u00fcn fiyat\u0131n\u0131 giriniz: \")\n        try:\n            fiyat_float = float(fiyat_str)\n            # E\u011fer ama\u00e7 fiyat\u0131 string olarak kullan\u0131p title() uygulamak de\u011filse,\n            # float olarak geri d\u00f6nd\u00fcr\u00fcyoruz.\n            return fiyat_float\n        except ValueError:\n            print(\"Ge\u00e7ersiz fiyat format\u0131. L\u00fctfen say\u0131sal bir de\u011fer giriniz.\")\n\n# urun_fiyati = fiyat_al()\n# print(f\"\u00dcr\u00fcn fiyat\u0131: {urun_fiyati:.2f} TL\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131mla, kullan\u0131c\u0131dan al\u0131nan verinin beklenen format ve tipte oldu\u011fundan emin olunur. E\u011fer kullan\u0131c\u0131 bir say\u0131 girmesi gereken yere metin girerse, bu durum erken a\u015famada yakalan\u0131r ve <code>AttributeError<\/code> gibi daha sonra ortaya \u00e7\u0131kacak hatalar \u00f6nlenmi\u015f olur. Her zaman veri tiplerine kar\u015f\u0131 dikkatli olmak ve gerekti\u011finde d\u00f6n\u00fc\u015f\u00fcm veya do\u011frulama yapmak, daha sa\u011flam ve g\u00fcvenilir Python kodlar\u0131 yazman\u0131n temelidir.<\/p>\n<h2>Geli\u015fmi\u015f Teknikler ve \u00d6nleyici Yakla\u015f\u0131mlar: Daha Sa\u011flam Kod Yazma<\/h2>\n<p>Python'da sadece hatalar\u0131 d\u00fczeltmekle kalmay\u0131p, onlar\u0131n hi\u00e7 olu\u015fmamas\u0131n\u0131 sa\u011flamak, iyi bir yaz\u0131l\u0131m geli\u015ftiricisinin temel \u00f6zelliklerinden biridir. <code>AttributeError<\/code> gibi tip ba\u011f\u0131ml\u0131 hatalar\u0131 \u00f6nlemek i\u00e7in kullanabilece\u011fimiz baz\u0131 ileri d\u00fczey teknikler ve savunmac\u0131 programlama yakla\u015f\u0131mlar\u0131 bulunmaktad\u0131r.<\/p>\n<h3>Hata Yakalama (Exception Handling) ile Zarif\u00e7e Y\u00f6netme: <code>try-except<\/code> Bloklar\u0131<\/h3>\n<p>Verinin tipinden her zaman emin olamayaca\u011f\u0131n\u0131z veya kullan\u0131c\u0131 giri\u015flerinin tahmin edilemez oldu\u011fu durumlarda, <code>try-except<\/code> bloklar\u0131 hatay\u0131 kodun \u00e7\u00f6kmesini engellemek i\u00e7in zarif bir yol sunar. Belirli bir <code>AttributeError<\/code>'\u0131 yakalayarak, bu hatay\u0131 \u00f6zel olarak ele alabilir ve alternatif bir eylem ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<pre><code class=\"language-python\">\ndef islem_yap(deger):\n    try:\n        # title() metodunu kullanmay\u0131 dene\n        print(f\"\u0130\u015flenmi\u015f de\u011fer: {deger.title()}\")\n    except AttributeError:\n        # E\u011fer AttributeError olu\u015fursa, de\u011feri string'e \u00e7evirip tekrar dene\n        print(f\"Hata: '{deger}' bir string de\u011fil. String'e \u00e7evrilip i\u015fleniyor...\")\n        print(f\"\u0130\u015flenmi\u015f de\u011fer (str'ye \u00e7evrilmi\u015f): {str(deger).title()}\")\n    except Exception as e:\n        # Di\u011fer beklenmedik hatalar\u0131 da yakala\n        print(f\"Beklenmedik bir hata olu\u015ftu: {e}\")\n\nislem_yap(\"python programlama\")\nprint(\"-\" * 20)\nislem_yap(12345)\nprint(\"-\" * 20)\nislem_yap([\"liste\", \"eleman\u0131\"]) # Ba\u015fka bir AttributeError t\u00fcr\u00fc\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>AttributeError<\/code> yakaland\u0131\u011f\u0131nda, program \u00e7\u00f6kmek yerine alternatif bir i\u015flem ger\u00e7ekle\u015ftirir. Bu, \u00f6zellikle veri kayna\u011f\u0131ndan karma\u015f\u0131k veya tahmin edilemeyen veri tipleri geldi\u011finde kritik \u00f6neme sahiptir. Ayr\u0131ca, sadece belirli <code>AttributeError<\/code>'lar\u0131 de\u011fil, ayn\u0131 zamanda <code>ValueError<\/code> gibi di\u011fer potansiyel hatalar\u0131 da yakalamak, kodunuzu daha sa\u011flam hale getirir.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: <code>try-except<\/code> bloklar\u0131n\u0131 kullan\u0131rken, m\u00fcmk\u00fcn oldu\u011funca spesifik hata t\u00fcrlerini yakalamaya \u00e7al\u0131\u015f\u0131n (\u00f6rne\u011fin <code>AttributeError<\/code> veya <code>ValueError<\/code> yerine sadece <code>Exception<\/code> kullanmaktan ka\u00e7\u0131n\u0131n). Bu, beklenmeyen hatalar\u0131 yanl\u0131\u015fl\u0131kla maskelememenizi ve hata ay\u0131klama s\u00fcrecini kolayla\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/div>\n<h3>Savunmac\u0131 Programlama (Defensive Programming) ve Tip \u0130pu\u00e7lar\u0131 (Type Hints)<\/h3>\n<p>Savunmac\u0131 programlama, kodunuzun beklenmedik veya ge\u00e7ersiz girdilerle kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda bile do\u011fru davranmas\u0131n\u0131 sa\u011flamak i\u00e7in tasarlanm\u0131\u015f bir yakla\u015f\u0131md\u0131r. Bu, potansiyel sorunlar\u0131 m\u00fcmk\u00fcn oldu\u011funca erken tespit etmek ve d\u00fczeltmek anlam\u0131na gelir.<\/p>\n<ul>\n<li><strong>Her Zaman Veri Tipini Kontrol Etme Al\u0131\u015fkanl\u0131\u011f\u0131:<\/strong> Bir fonksiyon parametresi veya bir veri kayna\u011f\u0131ndaki de\u011fer \u00fczerinde i\u015flem yapmadan \u00f6nce, <code>type()<\/code> veya <code>isinstance()<\/code> kullanarak tipini do\u011frulamak, basit ama etkili bir savunma mekanizmas\u0131d\u0131r.<\/li>\n<li><strong>Tip \u0130pu\u00e7lar\u0131 (Type Hints):<\/strong> Python 3.5 ve sonraki s\u00fcr\u00fcmler, fonksiyon tan\u0131mlar\u0131nda veya de\u011fi\u015fken atamalar\u0131nda tip ipu\u00e7lar\u0131 (type hints) kullanma imkan\u0131 sunar. Bu ipu\u00e7lar\u0131, kodun \u00e7al\u0131\u015fma zaman\u0131nda bir \u015fey yapmasa da, geli\u015ftiricilere ve statik analiz ara\u00e7lar\u0131na (MyPy gibi) de\u011fi\u015fkenlerin beklenen tipleri hakk\u0131nda bilgi verir ve potansiyel tip hatalar\u0131n\u0131 erken a\u015famada bulmaya yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<pre><code class=\"language-python\">\nfrom typing import Union\n\ndef buyuk_harfe_cevir(metin: Union[str, int]) -> str:\n    \"\"\"\n    Verilen de\u011feri b\u00fcy\u00fck harfe \u00e7evirir. E\u011fer int ise \u00f6nce string'e \u00e7evirir.\n    \"\"\"\n    if isinstance(metin, str):\n        return metin.upper() # title() yerine upper() kullanarak bir \u00f6rnek daha\n    elif isinstance(metin, int):\n        return str(metin).upper()\n    else:\n        # Ge\u00e7ersiz tipler i\u00e7in bir hata f\u0131rlatabiliriz veya varsay\u0131lan bir de\u011fer d\u00f6nd\u00fcrebiliriz\n        raise TypeError(f\"Beklenmeyen tip: {type(metin)}. Sadece str veya int bekleniyor.\")\n\nprint(buyuk_harfe_cevir(\"Merhaba\"))  # \u00c7\u0131kt\u0131: MERHABA\nprint(buyuk_harfe_cevir(123))      # \u00c7\u0131kt\u0131: 123\n# print(buyuk_harfe_cevir([1, 2])) # TypeError f\u0131rlat\u0131r\n    <\/pre>\n<p><\/code><\/p>\n<p><code>Union[str, int]<\/code> ifadesi, <code>metin<\/code> parametresinin ya bir string ya da bir integer olabilece\u011fini belirtir. Bu, kodun okunabilirli\u011fini art\u0131r\u0131r ve potansiyel tip hatalar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7meye yard\u0131mc\u0131 olur.<\/p>\n<h3>Veri Temizleme ve D\u00f6n\u00fc\u015ft\u00fcrme Pipelines<\/h3>\n<p>B\u00fcy\u00fck projelerde veya veri yo\u011fun uygulamalarda, verinin sisteme girdi\u011fi andan itibaren tutarl\u0131 bir \u015fekilde i\u015flenmesini sa\u011flayan \"veri temizleme\" ve \"d\u00f6n\u00fc\u015ft\u00fcrme\" ad\u0131mlar\u0131 olu\u015fturmak \u00e7ok \u00f6nemlidir. Bu ad\u0131mlar, verinin her zaman beklenen tipte ve formatta oldu\u011fundan emin olmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. \u00d6rne\u011fin, bir veritaban\u0131ndan veya API'den veri \u00e7ekerken, bu verileri bir dizi do\u011frulama ve d\u00f6n\u00fc\u015ft\u00fcrme i\u015fleminden ge\u00e7irerek, daha sonraki ad\u0131mlarda <code>AttributeError<\/code> gibi hatalarla kar\u015f\u0131la\u015fma olas\u0131l\u0131\u011f\u0131n\u0131 minimize edersiniz.<\/p>\n<p>Bu ileri d\u00fczey teknikler ve \u00f6nleyici yakla\u015f\u0131mlar, sadece <code>AttributeError<\/code>'\u0131 de\u011fil, Python kodunuzdaki genel hata oran\u0131n\u0131 da azaltman\u0131za yard\u0131mc\u0131 olur. Kodunuzu daha g\u00fc\u00e7l\u00fc, daha g\u00fcvenilir ve daha bak\u0131m\u0131 kolay hale getirirler. Bir sonraki b\u00f6l\u00fcmde, bu yakla\u015f\u0131mlar\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131na uygulayarak daha somut \u00f6rnekler sunaca\u011f\u0131z.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka Analizleri<\/h2>\n<p>Teorik bilgileri peki\u015ftirmek ve bu hatay\u0131 ger\u00e7ek hayattaki uygulamalarda nas\u0131l ele alaca\u011f\u0131m\u0131z\u0131 g\u00f6rmek i\u00e7in iki farkl\u0131 vaka analizini inceleyelim. Bu senaryolar, <code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131n\u0131n nas\u0131l ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve nas\u0131l d\u00fczeltilebilece\u011fini somut \u00f6rneklerle g\u00f6sterecektir.<\/p>\n<h3>Senaryo 1: CSV'den Okunan M\u00fc\u015fteri Verilerini \u0130\u015fleme<\/h3>\n<p>Bir e-ticaret uygulamas\u0131nda, m\u00fc\u015fteri verilerini i\u00e7eren bir CSV dosyas\u0131n\u0131 i\u015fledi\u011finizi varsayal\u0131m. Bu dosyada m\u00fc\u015fteri isimleri, soyisimleri ve m\u00fc\u015fteri ID'leri bulunmaktad\u0131r. \u0130stenen, m\u00fc\u015fteri isimlerini ve soyisimlerini \"ba\u015fl\u0131k format\u0131nda\" (her kelimenin ilk harfi b\u00fcy\u00fck) g\u00f6stermek, m\u00fc\u015fteri ID'lerini ise say\u0131sal olarak kullanmakt\u0131r.<\/p>\n<p><strong>Hatal\u0131 Yakla\u015f\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">\nimport csv\n\n# \u00d6rnek CSV i\u00e7eri\u011fi (bir dosyadan okundu\u011funu varsay\u0131n)\ncsv_data = \"\"\"id,ad,soyad\n101,ay\u015fe,y\u0131lmaz\n102,mehmet,demir\n103,fatma,can\n104,ali,veli\"\"\"\n\n# Ge\u00e7ici bir CSV dosyas\u0131 olu\u015ftural\u0131m\nwith open(\"musteriler.csv\", \"w\", encoding=\"utf-8\") as f:\n    f.write(csv_data)\n\nmusteri_listesi = []\nwith open(\"musteriler.csv\", \"r\", encoding=\"utf-8\") as csvfile:\n    reader = csv.DictReader(csvfile)\n    for row in reader:\n        # T\u00fcm s\u00fctunlar varsay\u0131lan olarak string olarak okunur\n        # Ama\u00e7: ID'yi int'e \u00e7evirip sonra t\u00fcm alanlara title() uygulamak\n        try:\n            row['id'] = int(row['id']) # ID'yi int'e \u00e7eviriyoruz\n            # Hata burada olu\u015facak: int olan 'id' \u00fczerinde title() \u00e7a\u011fr\u0131l\u0131yor\n            row['ad'] = row['ad'].title()\n            row['soyad'] = row['soyad'].title()\n            row['id'] = row['id'].title() # Hata sat\u0131r\u0131\n            musteri_listesi.append(row)\n        except AttributeError as e:\n            print(f\"Hata olu\u015ftu: {e} - Sat\u0131r: {row}. 'id' alan\u0131n\u0131n tipi: {type(row['id'])}\")\n        except ValueError as e:\n            print(f\"Tip d\u00f6n\u00fc\u015f\u00fcm hatas\u0131: {e} - Sat\u0131r: {row}\")\n\n# print(musteri_listesi)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryoda, <code>row['id'] = int(row['id'])<\/code> ifadesi ile m\u00fc\u015fteri ID'leri integer'a d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fckten sonra, yanl\u0131\u015fl\u0131kla <code>row['id'].title()<\/code> \u00e7a\u011fr\u0131s\u0131 yap\u0131l\u0131r ve bu da <code>AttributeError<\/code> hatas\u0131na yol a\u00e7ar. ID'lerin metinsel bir formata d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcp ba\u015fl\u0131k format\u0131nda olmas\u0131 zaten anlams\u0131zd\u0131r.<\/p>\n<p><strong>Do\u011fru Yakla\u015f\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">\nimport csv\n\n# Ge\u00e7ici bir CSV dosyas\u0131 olu\u015ftural\u0131m\ncsv_data = \"\"\"id,ad,soyad\n101,ay\u015fe,y\u0131lmaz\n102,mehmet,demir\n103,fatma,can\n104,ali,veli\"\"\"\n\nwith open(\"musteriler.csv\", \"w\", encoding=\"utf-8\") as f:\n    f.write(csv_data)\n\nmusteri_listesi_duzeltilmis = []\nwith open(\"musteriler.csv\", \"r\", encoding=\"utf-8\") as csvfile:\n    reader = csv.DictReader(csvfile)\n    for row in reader:\n        try:\n            # ID'yi int'e \u00e7evir, ancak \u00fczerinde title() kullanma\n            row['id'] = int(row['id'])\n\n            # Ad ve Soyad string oldu\u011fu i\u00e7in title() uygulayabiliriz\n            row['ad'] = row['ad'].title()\n            row['soyad'] = row['soyad'].title()\n\n            musteri_listesi_duzeltilmis.append(row)\n        except ValueError:\n            print(f\"Uyar\u0131: ID '{row['id']}' say\u0131sal de\u011fil, atlan\u0131yor veya string olarak b\u0131rak\u0131l\u0131yor.\")\n            # Hata durumunda ID'yi string olarak b\u0131rakabiliriz\n            row['ad'] = row['ad'].title()\n            row['soyad'] = row['soyad'].title()\n            musteri_listesi_duzeltilmis.append(row)\n        except AttributeError as e:\n            print(f\"Beklenmeyen AttributeError: {e} - Sat\u0131r: {row}\")\n\nprint(\"D\u00fczeltilmi\u015f M\u00fc\u015fteri Listesi:\")\nfor musteri in musteri_listesi_duzeltilmis:\n    print(musteri)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu d\u00fczeltilmi\u015f yakla\u015f\u0131mda, <code>id<\/code> alan\u0131 integer'a \u00e7evrildikten sonra \u00fczerinde <code>title()<\/code> metodu \u00e7a\u011fr\u0131lmam\u0131\u015ft\u0131r. Yaln\u0131zca <code>ad<\/code> ve <code>soyad<\/code> gibi string alanlar\u0131na <code>title()<\/code> uygulanm\u0131\u015ft\u0131r. Ayr\u0131ca, <code>ValueError<\/code> durumunda da esnek bir hata y\u00f6netimi eklenmi\u015ftir.<\/p>\n<h3>Senaryo 2: Web API Yan\u0131tlar\u0131n\u0131 \u0130\u015fleme<\/h3>\n<p>Bir web servisinden kullan\u0131c\u0131 profilleri \u00e7ekti\u011finizi ve kullan\u0131c\u0131n\u0131n ya\u015f\u0131n\u0131 ve mesle\u011fini g\u00f6r\u00fcnt\u00fclemek istedi\u011finizi d\u00fc\u015f\u00fcnelim. API'den gelen veriler bazen tutars\u0131z olabilir; \u00f6rne\u011fin ya\u015f alan\u0131 bazen say\u0131, bazen de say\u0131sal bir string olarak gelebilir.<\/p>\n<p><strong>Hatal\u0131 Yakla\u015f\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">\nimport json\n\n# API'den gelen \u00f6rnek yan\u0131tlar\napi_yanitlari = [\n    {'kullanici_adi': 'caner_guler', 'yas': 30, 'meslek': 'yazilim m\u00fchendisi'},\n    {'kullanici_adi': 'elif_sahin', 'yas': '25', 'meslek': 'grafik tasar\u0131mc\u0131'},\n    {'kullanici_adi': 'deniz_ozcan', 'yas': 28, 'meslek': 'pazarlama uzman\u0131'},\n    {'kullanici_adi': 'ayse_yilmaz', 'yas': 'bilinmiyor', 'meslek': '\u00f6\u011frenci'},\n]\n\nfor profil in api_yanitlari:\n    try:\n        # Mesle\u011fi formatla (her zaman string varsay\u0131m\u0131)\n        profil['meslek'] = profil['meslek'].title()\n\n        # Ya\u015f\u0131 int'e \u00e7evirip sonra title() uygulamaya \u00e7al\u0131\u015fmak\n        profil['yas'] = int(profil['yas'])\n        # Hata burada olu\u015facak, \u00e7\u00fcnk\u00fc 'yas' art\u0131k bir int\n        # profillerin hepsinde meslek do\u011fru gelirken, yas k\u0131sm\u0131nda title() \u00e7a\u011fr\u0131lmaya \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda patlayabilir.\n        profil['yas'] = profil['yas'].title()\n        print(profil)\n    except AttributeError as e:\n        print(f\"Hata: 'meslek' veya 'yas' \u00fczerinde title() kullan\u0131lamad\u0131. Profil: {profil}. Hata: {e}\")\n    except ValueError as e:\n        print(f\"Hata: Ya\u015f de\u011feri say\u0131ya \u00e7evrilemedi. Profil: {profil}. Hata: {e}\")\n\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, ilk iki profilde <code>meslek<\/code> alan\u0131 do\u011fru bir \u015fekilde i\u015flenirken, <code>yas<\/code> alan\u0131 <code>int()<\/code>'e \u00e7evrildikten sonra <code>.title()<\/code> metodu \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 i\u00e7in <code>AttributeError<\/code> olu\u015facakt\u0131r. Ayr\u0131ca, <code>'bilinmiyor'<\/code> gibi bir ya\u015f de\u011feri <code>int()<\/code>'e \u00e7evrilmeye \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda <code>ValueError<\/code> olu\u015fur.<\/p>\n<p><strong>Do\u011fru Yakla\u015f\u0131m:<\/strong><\/p>\n<pre><code class=\"language-python\">\nimport json\n\napi_yanitlari = [\n    {'kullanici_adi': 'caner_guler', 'yas': 30, 'meslek': 'yazilim m\u00fchendisi'},\n    {'kullanici_adi': 'elif_sahin', 'yas': '25', 'meslek': 'grafik tasar\u0131mc\u0131'},\n    {'kullanici_adi': 'deniz_ozcan', 'yas': 28, 'meslek': 'pazarlama uzman\u0131'},\n    {'kullanici_adi': 'ayse_yilmaz', 'yas': 'bilinmiyor', 'meslek': '\u00f6\u011frenci'},\n]\n\nfor profil in api_yanitlari:\n    # Mesle\u011fi kontrol et ve title() uygula\n    if isinstance(profil.get('meslek'), str):\n        profil['meslek'] = profil['meslek'].title()\n    else:\n        print(f\"Uyar\u0131: Meslek alan\u0131 string de\u011fil. Profil: {profil}\")\n\n    # Ya\u015f\u0131 g\u00fcvenli bir \u015fekilde int'e \u00e7evir\n    yas_degeri = profil.get('yas')\n    if isinstance(yas_degeri, (str, int)):\n        try:\n            profil['yas'] = int(yas_degeri)\n        except ValueError:\n            print(f\"Uyar\u0131: Ya\u015f de\u011feri '{yas_degeri}' say\u0131ya \u00e7evrilemedi. Bo\u015f veya varsay\u0131lan de\u011fer atan\u0131yor. Profil: {profil}\")\n            profil['yas'] = None # Ya\u015f\u0131 bilinmeyen veya ge\u00e7ersiz olarak i\u015faretle\n    else:\n        print(f\"Uyar\u0131: Ya\u015f alan\u0131 beklenmeyen tipte. Profil: {profil}\")\n        profil['yas'] = None\n\n    print(profil)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu d\u00fczeltilmi\u015f yakla\u015f\u0131mda, hem <code>meslek<\/code> hem de <code>yas<\/code> alanlar\u0131 i\u00e7in ayr\u0131 ayr\u0131 tip kontrolleri ve hata yakalama mekanizmalar\u0131 kullan\u0131lm\u0131\u015ft\u0131r. <code>meslek<\/code> alan\u0131 sadece string ise <code>title()<\/code> uygulan\u0131r. <code>yas<\/code> alan\u0131 ise \u00f6nce string veya int olup olmad\u0131\u011f\u0131na bak\u0131l\u0131r, ard\u0131ndan g\u00fcvenli bir \u015fekilde integer'a \u00e7evrilmeye \u00e7al\u0131\u015f\u0131l\u0131r. E\u011fer bu i\u015flem ba\u015far\u0131s\u0131z olursa (\u00f6rne\u011fin 'bilinmiyor' gibi bir de\u011fer geldi\u011finde), <code>ValueError<\/code> yakalanarak ya\u015f alan\u0131 <code>None<\/code> olarak i\u015faretlenir. Bu sayede, kod daha esnek ve hatalara kar\u015f\u0131 daha diren\u00e7li hale gelir.<\/p>\n<h2>Mobil Uyumlu Kod Tasar\u0131m\u0131 (Kavramsal Bak\u0131\u015f)<\/h2>\n<p>Makalenin ba\u015fl\u0131\u011f\u0131 Python'daki bir hataya odaklanm\u0131\u015f olsa da, modern web geli\u015ftirme d\u00fcnyas\u0131nda i\u00e7erik sunumu ve kullan\u0131c\u0131 deneyimi de b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu, haz\u0131rlad\u0131\u011f\u0131m\u0131z teknik makalelerin veya sundu\u011fumuz herhangi bir web i\u00e7eri\u011finin mobil cihazlarda da sorunsuz bir \u015fekilde g\u00f6r\u00fcnt\u00fclenebilmesi gerekti\u011fi anlam\u0131na gelir. \"Mobil uyumlu HTML\" kavram\u0131, i\u00e7eri\u011fin farkl\u0131 ekran boyutlar\u0131na ve cihazlara (telefonlar, tabletler, masa\u00fcst\u00fc bilgisayarlar) otomatik olarak adapte olabilmesi yetene\u011fini ifade eder.<\/p>\n<p>Python kod \u00f6rnekleri veya teknik dok\u00fcmanlar sunarken, bu i\u00e7eri\u011fin mobil uyumlu bir web sayfas\u0131nda nas\u0131l g\u00f6r\u00fcnece\u011fi, okuyucunun deneyimini do\u011frudan etkiler. \u00d6rne\u011fin, uzun kod bloklar\u0131n\u0131n yatay kayd\u0131rma gerektirmeden okunabilmesi veya metinlerin k\u00fc\u00e7\u00fck ekranlarda rahat\u00e7a okunabilir olmas\u0131 \u00f6nemlidir. Mobil uyumlu tasar\u0131m, HTML, CSS ve bazen JavaScript kullan\u0131larak elde edilir. Bu makale sadece <code><body><\/code> i\u00e7eri\u011fini sa\u011flad\u0131\u011f\u0131 i\u00e7in do\u011frudan CSS medya sorgular\u0131n\u0131 buraya dahil edemeyiz, ancak kavramsal olarak nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve kod \u00f6rneklerinde bunun nas\u0131l d\u00fc\u015f\u00fcn\u00fclebilece\u011fini a\u00e7\u0131klayabiliriz.<\/p>\n<p><strong>Mobil Uyumlu Tasar\u0131m\u0131n Temel Prensipleri:<\/strong><\/p>\n<ol>\n<li><strong>Duyarl\u0131 Tasar\u0131m (Responsive Design):<\/strong> \u0130\u00e7eri\u011fin ekran boyutuna g\u00f6re otomatik olarak yeniden d\u00fczenlenmesi. Bu genellikle CSS medya sorgular\u0131 (<code>@media<\/code> rules) ile yap\u0131l\u0131r.<\/li>\n<li><strong>Esnek Izgaralar (Fluid Grids):<\/strong> Sabit piksel boyutlar\u0131 yerine y\u00fczde tabanl\u0131 geni\u015flikler kullanarak elementlerin ekran boyutuna g\u00f6re \u00f6l\u00e7eklenmesini sa\u011flar.<\/li>\n<li><strong>Esnek G\u00f6rseller (Flexible Images):<\/strong> G\u00f6rsellerin kapsay\u0131c\u0131 elemanlar\u0131n\u0131n geni\u015fli\u011fine g\u00f6re otomatik olarak ayarlanmas\u0131 (<code>max-width: 100%; height: auto;<\/code>).<\/li>\n<li><strong>Mobil \u00d6ncelikli Yakla\u015f\u0131m (Mobile-First Approach):<\/strong> Tasar\u0131ma en k\u00fc\u00e7\u00fck ekranlardan ba\u015flayarak daha b\u00fcy\u00fck ekranlara do\u011fru ilerlemek, temel deneyimi sa\u011flamak ve sonra geli\u015ftirmeler eklemek.<\/li>\n<\/ol>\n<p>Bir web sayfas\u0131n\u0131n veya i\u00e7eri\u011finin mobil uyumlu olmas\u0131n\u0131 sa\u011flayan temel CSS medya sorgular\u0131 genellikle \u015funa benzer:<\/p>\n<pre><code class=\"language-css\">\n\/* Genel stil tan\u0131mlamalar\u0131 (mobil cihazlar i\u00e7in varsay\u0131lan) *\/\nbody {\n    font-size: 16px;\n    line-height: 1.6;\n    margin: 10px;\n}\n\n\/* Kod bloklar\u0131 i\u00e7in stil *\/\npre code {\n    white-space: pre-wrap; \/* Uzun sat\u0131rlar\u0131 otomatik sar *\/\n    word-wrap: break-word; \/* Kelimeyi b\u00f6lerek sarmala *\/\n    max-width: 100%; \/* Kapsay\u0131c\u0131s\u0131ndan ta\u015fmas\u0131n *\/\n    overflow-x: auto; \/* Gerekirse yatay kayd\u0131rma \u00e7ubu\u011fu g\u00f6ster *\/\n    padding: 10px;\n    border-radius: 5px;\n    background-color: #f4f4f4;\n}\n\n\/* K\u00fc\u00e7\u00fck tabletler ve daha b\u00fcy\u00fck ekranlar i\u00e7in stiller *\/\n@media (min-width: 600px) {\n    body {\n        font-size: 17px;\n        margin: 20px;\n    }\n    .container {\n        max-width: 90%;\n        margin: 0 auto;\n    }\n}\n\n\/* Masa\u00fcst\u00fc bilgisayarlar ve daha b\u00fcy\u00fck ekranlar i\u00e7in stiller *\/\n@media (min-width: 992px) {\n    body {\n        font-size: 18px;\n    }\n    .container {\n        max-width: 800px;\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS \u00f6rne\u011fi, farkl\u0131 ekran boyutlar\u0131na g\u00f6re yaz\u0131 tiplerini, kenar bo\u015fluklar\u0131n\u0131 ve kapsay\u0131c\u0131 geni\u015fliklerini nas\u0131l ayarlayabilece\u011fimizi g\u00f6stermektedir. \u00d6zellikle <code>pre code<\/code> bloklar\u0131 i\u00e7in kullan\u0131lan <code>white-space: pre-wrap;<\/code> ve <code>word-wrap: break-word;<\/code> gibi \u00f6zellikler, uzun kod sat\u0131rlar\u0131n\u0131n mobil ekranlarda yatay kayd\u0131rma \u00e7ubu\u011fu olmadan okunabilmesi i\u00e7in kritiktir. <code>overflow-x: auto;<\/code> ise, e\u011fer kod blo\u011fu yine de \u00e7ok uzunsa, sadece kod blo\u011funun kendi i\u00e7inde yatay kayd\u0131rma \u00e7ubu\u011fu g\u00f6stermesini sa\u011flayarak sayfan\u0131n genel d\u00fczeninin bozulmas\u0131n\u0131 engeller.<\/p>\n<p>Bu makalede \u00fcretilen HTML i\u00e7eri\u011fi, anlamsal etiketler (<code><\/p>\n<h2><\/code>, <code><\/p>\n<h3><\/code>, <code><\/p>\n<p><\/code>, <code><\/p>\n<ul><\/code>, <code><\/p>\n<pre><code><\/code> vb.) kullan\u0131larak yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Bu yap\u0131, do\u011fru CSS kurallar\u0131 uyguland\u0131\u011f\u0131nda t\u00fcm cihazlarda kolayca okunabilir ve duyarl\u0131 bir \u015fekilde adapte edilebilir bir temel sa\u011flar. Dolay\u0131s\u0131yla, Python kod hatalar\u0131n\u0131n \u00e7\u00f6z\u00fcm\u00fcn\u00fc anlatan bir makale bile, sunum \u015fekliyle mobil kullan\u0131c\u0131 deneyimini g\u00f6z \u00f6n\u00fcnde bulundurarak haz\u0131rlanmal\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7: Daha G\u00fcvenli Python Kodlar\u0131 \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h2>\n<p><code>AttributeError: 'int' object has no attribute 'title'<\/code> hatas\u0131, Python'da veri tipleriyle ilgili yayg\u0131n bir yan\u0131lg\u0131n\u0131n veya eksikli\u011fin sonucudur. Bu makale boyunca, bu hatan\u0131n temel nedenlerini, farkl\u0131 senaryolarda nas\u0131l ortaya \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve hem basit tip d\u00f6n\u00fc\u015f\u00fcmleriyle hem de daha geli\u015fmi\u015f hata yakalama ve savunmac\u0131 programlama teknikleriyle nas\u0131l \u00e7\u00f6z\u00fclebilece\u011fini detayl\u0131 bir \u015fekilde inceledik.<\/p>\n<p>\u00d6zetle, bu hatadan ka\u00e7\u0131nman\u0131n anahtar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Veri Tiplerini Anlay\u0131n:<\/strong> Python'da her nesnenin bir tipi vard\u0131r ve her tipin kendine \u00f6zg\u00fc metotlar\u0131 bulunur. <code>title()<\/code> metodu yaln\u0131zca string (metin) nesneleri i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/li>\n<li><strong>Veri Ak\u0131\u015f\u0131n\u0131 Takip Edin:<\/strong> \u00d6zellikle d\u0131\u015f kaynaklardan (kullan\u0131c\u0131 giri\u015fi, dosyalar, API'ler) gelen verilerin tipini her zaman do\u011frulay\u0131n.<\/li>\n<li><strong>Tip D\u00f6n\u00fc\u015f\u00fcm\u00fc Yap\u0131n:<\/strong> E\u011fer say\u0131sal bir de\u011feri metin olarak i\u015flemek istiyorsan\u0131z, <code>str()<\/code> fonksiyonu ile a\u00e7\u0131k\u00e7a string'e d\u00f6n\u00fc\u015ft\u00fcr\u00fcn.<\/li>\n<li><strong>Savunmac\u0131 Programlama Kullan\u0131n:<\/strong> <code>isinstance()<\/code> ile tip kontrol\u00fc yap\u0131n ve <code>try-except<\/code> bloklar\u0131yla potansiyel hatalar\u0131 zarif\u00e7e y\u00f6netin.<\/li>\n<li><strong>Tip \u0130pu\u00e7lar\u0131ndan Faydalan\u0131n:<\/strong> Kodunuzun okunabilirli\u011fini art\u0131rmak ve potansiyel hatalar\u0131 erken yakalamak i\u00e7in tip ipu\u00e7lar\u0131n\u0131 kullan\u0131n.<\/li>\n<\/ul>\n<p>Python programlamas\u0131nda hatalar ka\u00e7\u0131n\u0131lmazd\u0131r, ancak \u00f6nemli olan bu hatalar\u0131 anlayabilme, te\u015fhis edebilme ve etkili bir \u015fekilde \u00e7\u00f6zebilme yetene\u011fidir. Bu makalede edindi\u011finiz bilgilerle, <code>AttributeError<\/code> ile kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda art\u0131k ne yapaca\u011f\u0131n\u0131z\u0131 biliyorsunuz ve daha sa\u011flam, g\u00fcvenilir ve bak\u0131m\u0131 kolay Python kodlar\u0131 yazma yolunda \u00f6nemli bir ad\u0131m atm\u0131\u015f oldunuz. Pratik yapmaya devam edin ve hata mesajlar\u0131n\u0131 bir \u00f6\u011frenme f\u0131rsat\u0131 olarak g\u00f6r\u00fcn!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>S1: <code>AttributeError<\/code> ile <code>TypeError<\/code> aras\u0131ndaki fark nedir?<\/h4>\n<p><strong>Cevap:<\/strong> <code>AttributeError<\/code>, bir nesnenin mevcut olmayan bir \u00f6zelli\u011fine (attribute) veya metoduna eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda ortaya \u00e7\u0131kar. \u00d6rne\u011fin, bir <code>int<\/code> nesnesi \u00fczerinde <code>.title()<\/code> metodunu \u00e7a\u011f\u0131rmak gibi. <code>TypeError<\/code> ise, bir i\u015fleme veya fonksiyona yanl\u0131\u015f tipte bir arg\u00fcman sa\u011flad\u0131\u011f\u0131n\u0131zda meydana gelir. \u00d6rne\u011fin, bir string ile bir say\u0131y\u0131 do\u011frudan toplamaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda (<code>\"merhaba\" + 5<\/code>) bir <code>TypeError<\/code> al\u0131rs\u0131n\u0131z \u00e7\u00fcnk\u00fc <code>+<\/code> operat\u00f6r\u00fc bu iki tip i\u00e7in tan\u0131ml\u0131 de\u011fildir.<\/p>\n<h4>S2: Her zaman <code>str()<\/code> kullanmak iyi bir fikir midir?<\/h4>\n<p><strong>Cevap:<\/strong> Hay\u0131r, her zaman <code>str()<\/code> kullanmak iyi bir fikir de\u011fildir. <code>str()<\/code> kullanmak, yaln\u0131zca say\u0131sal bir de\u011feri metin olarak temsil etmeniz ve metin i\u015flemlerini uygulaman\u0131z gerekti\u011finde uygundur. E\u011fer de\u011ferin say\u0131sal niteli\u011fiyle matematiksel i\u015flemler yapacaksan\u0131z, onu string'e \u00e7evirmemelisiniz. Yanl\u0131\u015f zamanda yap\u0131lan tip d\u00f6n\u00fc\u015f\u00fcmleri, mant\u0131k hatalar\u0131na yol a\u00e7abilir. Her zaman amac\u0131n\u0131za uygun tip d\u00f6n\u00fc\u015f\u00fcm\u00fcn\u00fc yapmal\u0131s\u0131n\u0131z.<\/p>\n<h4>S3: Bu hatay\u0131 di\u011fer veri tiplerinde de g\u00f6rebilir miyim?<\/h4>\n<p><strong>Cevap:<\/strong> Evet, <code>AttributeError<\/code> hatas\u0131n\u0131 farkl\u0131 veri tipleri aras\u0131nda yanl\u0131\u015f metot \u00e7a\u011fr\u0131lar\u0131 yapt\u0131\u011f\u0131n\u0131zda g\u00f6rebilirsiniz. \u00d6rne\u011fin, bir liste \u00fczerinde string metodunu (<code>['a', 'b'].title()<\/code>) veya bir string \u00fczerinde liste metodunu (<code>\"abc\".append('d')<\/code>) \u00e7a\u011f\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda da <code>AttributeError<\/code> al\u0131rs\u0131n\u0131z. Bu hata, Python'da nesne y\u00f6nelimli programlaman\u0131n temel bir yans\u0131mas\u0131d\u0131r.<\/p>\n<h4>S4: Python'da <code>title()<\/code> d\u0131\u015f\u0131nda ba\u015fka hangi string metodlar\u0131 var?<\/h4>\n<p><strong>Cevap:<\/strong> Python'da stringler i\u00e7in \u00e7ok say\u0131da kullan\u0131\u015fl\u0131 metot bulunur. Baz\u0131lar\u0131 \u015funlard\u0131r: <code>upper()<\/code> (t\u00fcm harfleri b\u00fcy\u00fck harfe \u00e7evirir), <code>lower()<\/code> (t\u00fcm harfleri k\u00fc\u00e7\u00fck harfe \u00e7evirir), <code>strip()<\/code> (ba\u015f\u0131ndaki ve sonundaki bo\u015fluklar\u0131 kald\u0131r\u0131r), <code>replace()<\/code> (belirli bir alt dizeyi ba\u015fka bir alt dizeyle de\u011fi\u015ftirir), <code>split()<\/code> (string'i belirli bir ay\u0131r\u0131c\u0131ya g\u00f6re listeye b\u00f6ler), <code>join()<\/code> (bir liste \u00f6\u011felerini belirli bir string ile birle\u015ftirir), <code>find()<\/code> (bir alt dizenin ilk indeksini bulur), <code>startswith()<\/code> ve <code>endswith()<\/code> (string'in belirli bir diziyle ba\u015flay\u0131p ba\u015flamad\u0131\u011f\u0131n\u0131 kontrol eder).<\/p>\n<h4>S5: Hata ay\u0131klama s\u00fcrecini nas\u0131l h\u0131zland\u0131rabilirim?<\/h4>\n<p><strong>Cevap:<\/strong> Hata ay\u0131klama s\u00fcrecini h\u0131zland\u0131rmak i\u00e7in \u015funlar\u0131 yapabilirsiniz:<\/p>\n<ol>\n<li><strong><code>print()<\/code> ifadeleri kullan\u0131n:<\/strong> De\u011fi\u015fkenlerin de\u011ferlerini ve tiplerini kodunuzun farkl\u0131 noktalar\u0131nda yazd\u0131rarak ak\u0131\u015f\u0131 takip edin.<\/li>\n<li><strong>Hata ay\u0131klay\u0131c\u0131 (Debugger) kullan\u0131n:<\/strong> Visual Studio Code, PyCharm gibi IDE'lerin sundu\u011fu hata ay\u0131klay\u0131c\u0131lar ile kodunuzu ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131rabilir, de\u011fi\u015fken de\u011ferlerini anl\u0131k olarak izleyebilirsiniz.<\/li>\n<li><strong>K\u00fc\u00e7\u00fck par\u00e7alar halinde test edin:<\/strong> Karma\u015f\u0131k bir fonksiyonun veya blo\u011fun tamam\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak yerine, her bir par\u00e7ay\u0131 ayr\u0131 ayr\u0131 test ederek sorunun nerede oldu\u011funu daralt\u0131n.<\/li>\n<li><strong>Bir hata g\u00fcnl\u00fc\u011f\u00fc (logging) sistemi kullan\u0131n:<\/strong> \u00d6zellikle \u00fcretim ortam\u0131ndaki uygulamalarda, detayl\u0131 hata ve bilgi g\u00fcnl\u00fckleri tutmak, sorunlar\u0131 daha h\u0131zl\u0131 tespit etmenizi sa\u011flar.<\/li>\n<li><strong>Hatay\u0131 yeniden olu\u015fturun:<\/strong> Hatay\u0131 tutarl\u0131 bir \u015fekilde yeniden olu\u015fturabilmek, onu d\u00fczeltmenin ilk ad\u0131m\u0131d\u0131r. Minimum d\u00fczeyde kodla hatay\u0131 tekrar yaratmaya \u00e7al\u0131\u015f\u0131n.<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python&#8217;da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: &#8216;int&#8217; object has no attribute &#8216;title&#8217; hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-35772","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python&#039;da &#039;int&#039; Object Has No Attribute &#039;title&#039; Hatas\u0131 Nas\u0131l Giderilir?<\/title>\n<meta name=\"description\" content=\"Python&#039;da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: &#039;int&#039; object has no attribute &#039;title&#039; hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python&#039;da &#039;int&#039; Object Has No Attribute &#039;title&#039; Hatas\u0131 Nas\u0131l Giderilir?\" \/>\n<meta property=\"og:description\" content=\"Python&#039;da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: &#039;int&#039; object has no attribute &#039;title&#039; hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-03T16:31:19+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python&#8217;da &#8216;int&#8217; Object Has No Attribute &#8216;title&#8217; Hatas\u0131 Nas\u0131l Giderilir?\",\"datePublished\":\"2025-12-03T16:31:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\"},\"wordCount\":4177,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\",\"name\":\"Python'da 'int' Object Has No Attribute 'title' Hatas\u0131 Nas\u0131l Giderilir?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-03T16:31:19+00:00\",\"description\":\"Python'da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: 'int' object has no attribute 'title' hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python&#8217;da &#8216;int&#8217; Object Has No Attribute &#8216;title&#8217; Hatas\u0131 Nas\u0131l Giderilir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python'da 'int' Object Has No Attribute 'title' Hatas\u0131 Nas\u0131l Giderilir?","description":"Python'da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: 'int' object has no attribute 'title' hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Python'da 'int' Object Has No Attribute 'title' Hatas\u0131 Nas\u0131l Giderilir?","og_description":"Python'da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: 'int' object has no attribute 'title' hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.","og_url":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-03T16:31:19+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"30 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python&#8217;da &#8216;int&#8217; Object Has No Attribute &#8216;title&#8217; Hatas\u0131 Nas\u0131l Giderilir?","datePublished":"2025-12-03T16:31:19+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/"},"wordCount":4177,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/","url":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/","name":"Python'da 'int' Object Has No Attribute 'title' Hatas\u0131 Nas\u0131l Giderilir?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-03T16:31:19+00:00","description":"Python'da kod yazarken aniden kar\u015f\u0131n\u0131za \u00e7\u0131kan AttributeError: 'int' object has no attribute 'title' hatas\u0131 can s\u0131k\u0131c\u0131 olabilir. Bu makale, hatan\u0131n nedenlerini derinlemesine inceleyecek, temel Python veri tiplerinden ba\u015flayarak ad\u0131m ad\u0131m \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 sunacak ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu t\u00fcr hatalar\u0131 nas\u0131l \u00f6nleyebilece\u011finizi g\u00f6sterecektir.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-int-object-has-no-attribute-title-hatasi-nasil-giderilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python&#8217;da &#8216;int&#8217; Object Has No Attribute &#8216;title&#8217; Hatas\u0131 Nas\u0131l Giderilir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35772"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35772\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}