{"id":35512,"date":"2025-11-30T14:41:28","date_gmt":"2025-11-30T11:41:28","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35512"},"modified":"2025-11-30T14:41:28","modified_gmt":"2025-11-30T11:41:28","slug":"pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/","title":{"rendered":"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri"},"content":{"rendered":"<p><body><\/p>\n<h2>Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri<\/h2>\n<p>Python, nesne y\u00f6nelimli programlama (NYP) paradigmas\u0131n\u0131 g\u00fc\u00e7l\u00fc bir \u015fekilde destekleyen bir dildir. NYP, ger\u00e7ek d\u00fcnyadaki varl\u0131klar\u0131 ve kavramlar\u0131 modellememizi sa\u011flayan, kodun yeniden kullan\u0131labilirli\u011fini, okunabilirli\u011fini ve bak\u0131m\u0131n\u0131 art\u0131ran bir yakla\u015f\u0131md\u0131r. Bu rehberde, Python 3&#8217;te s\u0131n\u0131flar\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 ve nesnelerin nas\u0131l tan\u0131mlanaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, temel kavramlar\u0131 ve pratik uygulamalar\u0131 ke\u015ffedeceksiniz.<\/p>\n<p>Bir s\u0131n\u0131f, belirli bir t\u00fcrdeki nesnelerin \u00f6zelliklerini (niteliklerini) ve davran\u0131\u015flar\u0131n\u0131 (metotlar\u0131n\u0131) tan\u0131mlayan bir &#8220;plan&#8221; veya &#8220;\u015fablon&#8221;dur. Nesne ise bu s\u0131n\u0131ftan olu\u015fturulmu\u015f, somut bir \u00f6rnektir. \u00d6rne\u011fin, &#8220;Araba&#8221; bir s\u0131n\u0131f olabilirken, &#8220;Benim K\u0131rm\u0131z\u0131 Arabam&#8221; veya &#8220;Kom\u015funun Mavi Arabas\u0131&#8221; bu Araba s\u0131n\u0131f\u0131n\u0131n birer nesnesidir.<\/p>\n<h3>S\u0131n\u0131f Tan\u0131mlama ve Temel Yap\u0131 Ta\u015flar\u0131<\/h3>\n<p>Bir Python s\u0131n\u0131f\u0131 tan\u0131mlamak olduk\u00e7a basittir. <code>class<\/code> anahtar kelimesini kullan\u0131r\u0131z, ard\u0131ndan s\u0131n\u0131f\u0131n ad\u0131n\u0131 (genellikle PascalCase &#8211; her kelimenin ilk harfi b\u00fcy\u00fck) ve iki nokta \u00fcst \u00fcste koyar\u0131z.<\/p>\n<h4>Bir S\u0131n\u0131f\u0131 Tan\u0131mlamak<\/h4>\n<p>Basit bir s\u0131n\u0131f, sadece <code>pass<\/code> anahtar kelimesiyle bile tan\u0131mlanabilir. <code>pass<\/code>, Python&#8217;da hi\u00e7bir \u015fey yapmayan bir yer tutucudur.<\/p>\n<pre><code class=\"language-python\">class Araba:\n    pass # \u015eimdilik bir \u015fey yapm\u0131yor<\/code><\/pre>\n<p>Bu s\u0131n\u0131f hen\u00fcz herhangi bir nitelik veya metoda sahip de\u011fil. \u015eimdi bu s\u0131n\u0131fa \u00f6zellikler ve davran\u0131\u015flar ekleyelim.<\/p>\n<h4>Yap\u0131c\u0131 Metot (<code>__init__<\/code>)<\/h4>\n<p>Bir s\u0131n\u0131f\u0131n en \u00f6nemli metotlar\u0131ndan biri <code>__init__<\/code> metodudur. Bu, bir s\u0131n\u0131ftan yeni bir nesne (\u00f6rnek) olu\u015fturuldu\u011funda otomatik olarak \u00e7a\u011fr\u0131lan \u00f6zel bir metottur. Genellikle nesnenin ba\u015flang\u0131\u00e7 durumunu ayarlamak, yani niteliklerini tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><code>__init__<\/code> metodunun ilk parametresi her zaman <code>self<\/code> olmal\u0131d\u0131r. <code>self<\/code>, olu\u015fturulan nesnenin kendisine referans veren bir gelenektir (Python&#8217;da zorunlu bir anahtar kelime de\u011fildir, ancak yayg\u0131n olarak kullan\u0131l\u0131r). Bu sayede metot i\u00e7inde nesnenin kendi niteliklerine eri\u015febilir ve onlar\u0131 ayarlayabiliriz.<\/p>\n<pre><code class=\"language-python\">class Araba:\n    def __init__(self, marka, model, yil):\n        # self.marka, self.model, self.yil, bu nesneye ait niteliklerdir.\n        self.marka = marka\n        self.model = model\n        self.yil = yil\n        self.kilometre = 0 # Her araba ba\u015flang\u0131\u00e7ta 0 km'dir<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>Araba<\/code> s\u0131n\u0131f\u0131n\u0131n her yeni nesnesi olu\u015fturuldu\u011funda <code>marka<\/code>, <code>model<\/code> ve <code>yil<\/code> de\u011ferlerini alacak ve bu de\u011ferleri nesnenin kendi nitelikleri olarak saklayacakt\u0131r. <code>kilometre<\/code> niteli\u011fi ise varsay\u0131lan olarak <code>0<\/code> ile ba\u015flat\u0131l\u0131r.<\/p>\n<h4>Metotlar (Davran\u0131\u015flar)<\/h4>\n<p>Metotlar, bir s\u0131n\u0131f i\u00e7indeki fonksiyonlard\u0131r ve o s\u0131n\u0131ftan olu\u015fturulan nesnelerin yapabilece\u011fi eylemleri veya davran\u0131\u015flar\u0131 tan\u0131mlar. Metotlar da <code>self<\/code> parametresini alarak nesnenin kendi niteliklerine eri\u015febilir veya onlar\u0131 de\u011fi\u015ftirebilir.<\/p>\n<pre><code class=\"language-python\">class Araba:\n    def __init__(self, marka, model, yil):\n        self.marka = marka\n        self.model = model\n        self.yil = yil\n        self.kilometre = 0\n\n    def bilgi_goster(self):\n        \"\"\"Araban\u0131n mevcut bilgilerini g\u00f6steren metot.\"\"\"\n        print(f\"Marka: {self.marka}, Model: {self.model}, Y\u0131l: {self.yil}, Kilometre: {self.kilometre}\")\n\n    def sur(self, mesafe):\n        \"\"\"Arabay\u0131 belirli bir mesafe s\u00fcrer ve kilometreyi art\u0131r\u0131r.\"\"\"\n        if mesafe > 0:\n            self.kilometre += mesafe\n            print(f\"{self.model} {mesafe} km yol kat etti. Toplam kilometre: {self.kilometre}\")\n        else:\n            print(\"S\u00fcr\u00fclecek mesafe pozitif olmal\u0131d\u0131r.\")<\/code><\/pre>\n<p>Burada <code>bilgi_goster<\/code> ve <code>sur<\/code> ad\u0131nda iki metot tan\u0131mlad\u0131k. <code>bilgi_goster<\/code> metodu araban\u0131n mevcut niteliklerini yazd\u0131r\u0131rken, <code>sur<\/code> metodu <code>kilometre<\/code> niteli\u011fini g\u00fcnceller.<\/p>\n<h3>Nesne Olu\u015fturma ve Kullan\u0131m\u0131<\/h3>\n<p>S\u0131n\u0131f\u0131 tan\u0131mlad\u0131ktan sonra, ondan somut nesneler olu\u015fturabiliriz. Bu i\u015fleme &#8220;nesne \u00f6rneklendirme&#8221; (instantiation) denir.<\/p>\n<h4>Nesne \u00d6rneklendirme (Instantiation)<\/h4>\n<p>Bir nesne olu\u015fturmak i\u00e7in s\u0131n\u0131f ad\u0131n\u0131 bir fonksiyon \u00e7a\u011f\u0131r\u0131r gibi kullan\u0131r\u0131z ve <code>__init__<\/code> metodunun bekledi\u011fi arg\u00fcmanlar\u0131 ( <code>self<\/code> hari\u00e7) parantez i\u00e7inde g\u00f6ndeririz.<\/p>\n<pre><code class=\"language-python\"># Araba s\u0131n\u0131f\u0131ndan iki farkl\u0131 nesne olu\u015fturma\naraba1 = Araba(\"Toyota\", \"Corolla\", 2020)\naraba2 = Araba(\"Honda\", \"Civic\", 2022)\n\nprint(f\"Araba 1: {araba1.marka} {araba1.model}\")\nprint(f\"Araba 2: {araba2.marka} {araba2.model}\")<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>araba1<\/code> ve <code>araba2<\/code> art\u0131k <code>Araba<\/code> s\u0131n\u0131f\u0131n\u0131n ba\u011f\u0131ms\u0131z nesneleridir. Her birinin kendi <code>marka<\/code>, <code>model<\/code>, <code>yil<\/code> ve <code>kilometre<\/code> nitelikleri bulunur.<\/p>\n<h4>Niteliklere Eri\u015fme ve Metotlar\u0131 \u00c7a\u011f\u0131rma<\/h4>\n<p>Bir nesnenin niteliklerine eri\u015fmek veya metotlar\u0131n\u0131 \u00e7a\u011f\u0131rmak i\u00e7in &#8220;nokta&#8221; (<code>.<\/code>) operat\u00f6r\u00fcn\u00fc kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-python\"># araba1'in niteliklerine eri\u015fme\nprint(f\"Araba 1'in markas\u0131: {araba1.marka}\")\nprint(f\"Araba 1'in modeli: {araba1.model}\")\nprint(f\"Araba 1'in mevcut kilometresi: {araba1.kilometre}\")\n\n<h2>araba1'in metotlar\u0131n\u0131 \u00e7a\u011f\u0131rma<\/h2>\naraba1.bilgi_goster() # Marka: Toyota, Model: Corolla, Y\u0131l: 2020, Kilometre: 0\naraba1.sur(150) # Corolla 150 km yol kat etti. Toplam kilometre: 150\naraba1.bilgi_goster() # Marka: Toyota, Model: Corolla, Y\u0131l: 2020, Kilometre: 150\n\n<h2>araba2'nin niteliklerine eri\u015fme ve metotlar\u0131n\u0131 \u00e7a\u011f\u0131rma<\/h2>\naraba2.bilgi_goster() # Marka: Honda, Model: Civic, Y\u0131l: 2022, Kilometre: 0\naraba2.sur(200) # Civic 200 km yol kat etti. Toplam kilometre: 200\naraba2.sur(50)  # Civic 50 km yol kat etti. Toplam kilometre: 250\naraba2.bilgi_goster() # Marka: Honda, Model: Civic, Y\u0131l: 2022, Kilometre: 250<\/code><\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>araba1<\/code> ve <code>araba2<\/code> nesneleri birbirlerinden ba\u011f\u0131ms\u0131z olarak kendi verilerini tutar ve kendi metotlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<h4>Nesne Kimli\u011fi<\/h4>\n<p>Her nesne, bellekte benzersiz bir konuma sahiptir. Python&#8217;daki <code>id()<\/code> fonksiyonu ile bir nesnenin bellek adresini (kimli\u011fini) g\u00f6rebiliriz. Farkl\u0131 nesneler farkl\u0131 kimliklere sahip olacakt\u0131r.<\/p>\n<pre><code class=\"language-python\">print(f\"araba1'in kimli\u011fi: {id(araba1)}\")\nprint(f\"araba2'nin kimli\u011fi: {id(araba2)}\")\n\naraba3 = araba1 # araba3, araba1 ile ayn\u0131 nesneye referans verir\nprint(f\"araba3'\u00fcn kimli\u011fi: {id(araba3)}\") # araba1 ile ayn\u0131 kimlik<\/code><\/pre>\n<h3>Pratik Bilgiler ve Geli\u015fmi\u015f Konular<\/h3>\n<p>S\u0131n\u0131flar ve nesneler hakk\u0131nda temel bilgileri edindikten sonra, daha pratik ve kullan\u0131\u015fl\u0131 baz\u0131 \u00f6zelliklere g\u00f6z atal\u0131m.<\/p>\n<h4>S\u0131n\u0131f Nitelikleri ve \u00d6rnek Nitelikleri Aras\u0131ndaki Fark<\/h4>\n<p>\u015eimdiye kadar g\u00f6rd\u00fc\u011f\u00fcm\u00fcz <code>marka<\/code>, <code>model<\/code>, <code>yil<\/code> gibi nitelikler &#8220;\u00f6rnek nitelikleri&#8221;dir; yani her nesneye \u00f6zg\u00fcd\u00fcr. Bir de &#8220;s\u0131n\u0131f nitelikleri&#8221; vard\u0131r. Bunlar, s\u0131n\u0131f\u0131n t\u00fcm \u00f6rnekleri taraf\u0131ndan payla\u015f\u0131lan niteliklerdir ve do\u011frudan s\u0131n\u0131f\u0131n i\u00e7inde, metotlar\u0131n d\u0131\u015f\u0131nda tan\u0131mlan\u0131r.<\/p>\n<pre><code class=\"language-python\">class Araba:\n    tekerlek_sayisi = 4 # Bu bir s\u0131n\u0131f niteli\u011fidir, t\u00fcm arabalar i\u00e7in 4't\u00fcr.\n    kasa_tipleri = [\"Sedan\", \"Hatchback\", \"SUV\"] # Liste de olabilir\n\n    def __init__(self, marka, model, yil):\n        self.marka = marka\n        self.model = model\n        self.yil = yil\n        self.kilometre = 0\n\n    def bilgi_goster(self):\n        print(f\"Marka: {self.marka}, Model: {self.model}, Y\u0131l: {self.yil}, Kilometre: {self.kilometre}\")\n        print(f\"Tekerlek Say\u0131s\u0131: {Araba.tekerlek_sayisi}\") # S\u0131n\u0131f niteli\u011fine s\u0131n\u0131f ad\u0131yla eri\u015fim\n\n<h2>Nesne olu\u015fturma<\/h2>\naraba1 = Araba(\"Toyota\", \"Corolla\", 2020)\naraba2 = Araba(\"Honda\", \"Civic\", 2022)\n\n<h2>S\u0131n\u0131f niteli\u011fine do\u011frudan s\u0131n\u0131f \u00fczerinden eri\u015fim<\/h2>\nprint(f\"T\u00fcm arabalar\u0131n tekerlek say\u0131s\u0131: {Araba.tekerlek_sayisi}\")\nprint(f\"Araba 1'in tekerlek say\u0131s\u0131: {araba1.tekerlek_sayisi}\") # Nesne \u00fczerinden de eri\u015filebilir\n\n<h2>S\u0131n\u0131f niteli\u011fini de\u011fi\u015ftirme (t\u00fcm \u00f6rnekleri etkiler)<\/h2>\nAraba.tekerlek_sayisi = 6 # Art\u0131k t\u00fcm arabalar 6 tekerlekli olarak alg\u0131lan\u0131r\nprint(f\"Araba 2'nin yeni tekerlek say\u0131s\u0131: {araba2.tekerlek_sayisi}\")\n\n<h2>\u00d6nemli not: Bir \u00f6rnek \u00fczerinden s\u0131n\u0131f niteli\u011fini de\u011fi\u015ftirirseniz, asl\u0131nda o \u00f6rne\u011fe yeni bir \u00f6rnek niteli\u011fi eklemi\u015f olursunuz.<\/h2>\n<h2>araba1.tekerlek_sayisi = 3  # Bu sadece araba1'e \u00f6zel bir 'tekerlek_sayisi' niteli\u011fi ekler, s\u0131n\u0131f niteli\u011fini de\u011fi\u015ftirmez.<\/code><\/pre>\n<\/h2>\n<h4><code>__str__<\/code> ve <code>__repr__<\/code> Metotlar\u0131<\/h4>\n<p>Python&#8217;da nesnelerin string temsilini \u00f6zelle\u015ftirmek i\u00e7in <code>__str__<\/code> ve <code>__repr__<\/code> ad\u0131nda \u00f6zel metotlar kullan\u0131r\u0131z.<\/p>\n<p>*   <code>__str__<\/code>: Nesnenin insan taraf\u0131ndan okunabilir string temsilini d\u00f6nd\u00fcr\u00fcr. <code>print()<\/code> fonksiyonu veya <code>str()<\/code> fonksiyonu \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda kullan\u0131l\u0131r.<br \/>\n*   <code>__repr__<\/code>: Nesnenin resmi string temsilini d\u00f6nd\u00fcr\u00fcr. Geli\u015ftiricilerin hata ay\u0131klama s\u0131ras\u0131nda nesneyi anlamalar\u0131na yard\u0131mc\u0131 olur. Genellikle nesneyi yeniden olu\u015fturmak i\u00e7in kullan\u0131labilecek bir string d\u00f6nd\u00fcrmesi beklenir.<\/p>\n<pre><code class=\"language-python\">class Araba:\n    def __init__(self, marka, model, yil):\n        self.marka = marka\n        self.model = model\n        self.yil = yil\n        self.kilometre = 0\n\n    def __str__(self):\n        \"\"\"\u0130nsan taraf\u0131ndan okunabilir temsil.\"\"\"\n        return f\"{self.yil} model {self.marka} {self.model} ({self.kilometre} km)\"\n\n    def __repr__(self):\n        \"\"\"Geli\u015ftirici dostu temsil.\"\"\"\n        return f\"Araba(marka='{self.marka}', model='{self.model}', yil={self.yil}, kilometre={self.kilometre})\"\n\naraba_test = Araba(\"Tesla\", \"Model 3\", 2023)\n\nprint(araba_test) # __str__ metodunu \u00e7a\u011f\u0131r\u0131r\n<h2>\u00c7\u0131kt\u0131: 2023 model Tesla Model 3 (0 km)<\/h2>\n\nprint(repr(araba_test)) # __repr__ metodunu \u00e7a\u011f\u0131r\u0131r\n<h2>\u00c7\u0131kt\u0131: Araba(marka='Tesla', model='Model 3', yil=2023, kilometre=0)<\/h2>\n\n<h2>Bir liste i\u00e7indeki nesneler de __repr__ kullan\u0131r<\/h2>\narabalar_listesi = [araba_test, Araba(\"BMW\", \"X5\", 2021)]\nprint(arabalar_listesi)\n<h2>\u00c7\u0131kt\u0131: [Araba(marka='Tesla', model='Model 3', yil=2023, kilometre=0), Araba(marka='BMW', model='X5', yil=2021, kilometre=0)]<\/code><\/pre>\n<\/h2>\n<p>Bu metotlar\u0131 tan\u0131mlamak, kodunuzun \u00e7ok daha okunabilir ve hata ay\u0131klamas\u0131 kolay olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Kaps\u00fclleme (Encapsulation) ve Eri\u015fim Belirleyiciler (Conventions)<\/h4>\n<p>Kaps\u00fclleme, verileri (nitelikleri) ve bu veriler \u00fczerinde \u00e7al\u0131\u015fan metotlar\u0131 bir araya getirerek bir &#8220;kaps\u00fcl&#8221; i\u00e7inde saklama prensibidir. Bu, nesnenin i\u00e7 i\u015fleyi\u015fini d\u0131\u015f d\u00fcnyadan gizlemeye ve verilere do\u011frudan eri\u015fimi k\u0131s\u0131tlamaya yard\u0131mc\u0131 olur.<\/p>\n<p>Python&#8217;da di\u011fer baz\u0131 dillerdeki gibi kat\u0131 <code>private<\/code> veya <code>public<\/code> anahtar kelimeleri yoktur. Bunun yerine, geli\u015ftiriciler aras\u0131nda belirli isimlendirme kurallar\u0131 (conventions) kullan\u0131l\u0131r:<\/p>\n<p>*   <strong>Public (Genel)<\/strong>: Normal nitelikler ve metotlar. D\u0131\u015far\u0131dan do\u011frudan eri\u015filebilir. (<code>self.nitelik<\/code>, <code>self.metot()<\/code>)<br \/>\n*   <strong>Protected (Korumal\u0131)<\/strong>: Tek alt \u00e7izgi (<code>_<\/code>) ile ba\u015flayan nitelikler veya metotlar. Bu, geli\u015ftiricilere &#8220;bu bile\u015fene d\u0131\u015far\u0131dan do\u011frudan eri\u015fmeyin, dahili kullan\u0131m i\u00e7indir&#8221; mesaj\u0131n\u0131 verir. Ancak teknik olarak eri\u015fim engellenmez.<br \/>\n*   <strong>Private (\u00d6zel)<\/strong>: \u0130ki alt \u00e7izgi (<code>__<\/code>) ile ba\u015flayan nitelikler veya metotlar. Python, isim kar\u0131\u015ft\u0131rma (name mangling) yaparak bu bile\u015fenlerin d\u0131\u015far\u0131dan do\u011frudan eri\u015fimini daha zor hale getirir. Ancak yine de tamamen gizli de\u011fildir.<\/p>\n<p>\u00c7o\u011fu durumda tek alt \u00e7izgi kural\u0131 yeterlidir ve Python toplulu\u011fu taraf\u0131ndan yayg\u0131n olarak benimsenir.<\/p>\n<pre><code class=\"language-python\">class BankaHesabi:\n    def __init__(self, hesap_sahibi, bakiye):\n        self.hesap_sahibi = hesap_sahibi\n        self._bakiye = bakiye # \u0130\u00e7 kullan\u0131m i\u00e7in oldu\u011fu belirtilen korumal\u0131 nitelik\n\n    def para_yatir(self, miktar):\n        if miktar > 0:\n            self._bakiye += miktar\n            print(f\"{miktar} TL yat\u0131r\u0131ld\u0131. Yeni bakiye: {self._bakiye} TL\")\n        else:\n            print(\"Yat\u0131r\u0131lacak miktar pozitif olmal\u0131d\u0131r.\")\n\n    def para_cek(self, miktar):\n        if miktar > 0 and self._bakiye >= miktar:\n            self._bakiye -= miktar\n            print(f\"{miktar} TL \u00e7ekildi. Yeni bakiye: {self._bakiye} TL\")\n        else:\n            print(\"Ge\u00e7ersiz miktar veya yetersiz bakiye.\")\n\n    def bakiye_sorgula(self):\n        return self._bakiye\n\nhesap = BankaHesabi(\"Ali Y\u0131lmaz\", 1000)\nprint(f\"Hesap Sahibi: {hesap.hesap_sahibi}\")\n<h2>print(hesap._bakiye) # Kural gere\u011fi do\u011frudan eri\u015fimden ka\u00e7\u0131n\u0131l\u0131r, ancak teknik olarak m\u00fcmk\u00fcn<\/h2>\n\nhesap.para_yatir(500)\nhesap.para_cek(200)\nprint(f\"G\u00fcncel Bakiye: {hesap.bakiye_sorgula()} TL\")<\/code><\/pre>\n<p>Bu \u00f6rnekte <code>_bakiye<\/code> niteli\u011fi, hesab\u0131n bakiyesinin do\u011frudan d\u0131\u015far\u0131dan manip\u00fcle edilmesi yerine, <code>para_yatir<\/code> ve <code>para_cek<\/code> metotlar\u0131 arac\u0131l\u0131\u011f\u0131yla g\u00fcvenli bir \u015fekilde de\u011fi\u015ftirilmesi gerekti\u011fini belirtir.<\/p>\n<h4>Neden S\u0131n\u0131flar Kullanmal\u0131y\u0131z? (Ger\u00e7ek D\u00fcnya Uygulamalar\u0131)<\/h4>\n<p>S\u0131n\u0131flar, karma\u015f\u0131k sistemleri modellemek ve kodunuzu daha d\u00fczenli hale getirmek i\u00e7in vazge\u00e7ilmezdir:<\/p>\n<p>*   <strong>Modelleme<\/strong>: Ger\u00e7ek d\u00fcnyadaki varl\u0131klar\u0131 (Kullan\u0131c\u0131, \u00dcr\u00fcn, Sipari\u015f, \u00d6\u011frenci, Kitap vb.) programatik olarak temsil etmek.<br \/>\n*   <strong>Kod Yeniden Kullan\u0131m\u0131<\/strong>: Bir s\u0131n\u0131f\u0131 bir kez tan\u0131mlad\u0131ktan sonra, ondan istedi\u011finiz kadar nesne olu\u015fturabilir ve ayn\u0131 mant\u0131\u011f\u0131 tekrar tekrar kullanabilirsiniz.<br \/>\n*   <strong>Organizasyon ve Mod\u00fclerlik<\/strong>: \u0130lgili verileri ve fonksiyonlar\u0131 tek bir birim (s\u0131n\u0131f) alt\u0131nda toplar, bu da kodun daha kolay anla\u015f\u0131lmas\u0131n\u0131 ve y\u00f6netilmesini sa\u011flar.<br \/>\n*   <strong>Bak\u0131m Kolayl\u0131\u011f\u0131<\/strong>: Bir \u00f6zelli\u011fin de\u011fi\u015fmesi gerekti\u011finde, sadece ilgili s\u0131n\u0131f\u0131 g\u00fcncelleyerek bu de\u011fi\u015fikli\u011fi t\u00fcm nesnelere yans\u0131tabilirsiniz.<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p>Bu rehberde, Python&#8217;da s\u0131n\u0131flar\u0131n nas\u0131l tan\u0131mland\u0131\u011f\u0131n\u0131, <code>__init__<\/code> metodunun, niteliklerin ve metotlar\u0131n nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 \u00f6\u011frendiniz. Ayr\u0131ca nesnelerin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131, niteliklerine ve metotlar\u0131na nas\u0131l eri\u015filece\u011fini, s\u0131n\u0131f ve \u00f6rnek nitelikleri aras\u0131ndaki fark\u0131, <code>__str__<\/code> ve <code>__repr__<\/code> metotlar\u0131n\u0131 ve kaps\u00fclleme prensiplerini inceledik. Nesne y\u00f6nelimli programlama, Python&#8217;da daha g\u00fc\u00e7l\u00fc, esnek ve s\u00fcrd\u00fcr\u00fclebilir uygulamalar geli\u015ftirmenin anahtar\u0131d\u0131r.<\/p>\n<h4>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h4>\n<dl>\n<dt><strong>S: S\u0131n\u0131f ile nesne aras\u0131ndaki fark nedir?<\/strong><\/dt>\n<dd>C: S\u0131n\u0131f, bir nesnenin nas\u0131l olmas\u0131 gerekti\u011fini tan\u0131mlayan bir plan veya \u015fablondur. Nesne ise bu plandan olu\u015fturulmu\u015f, bellekte yer kaplayan somut bir \u00f6rnektir. Bir s\u0131n\u0131ftan birden fazla nesne olu\u015fturulabilir.<\/dd>\n<dt><strong>S: <code>self<\/code> anahtar kelimesi ne i\u015fe yarar?<\/strong><\/dt>\n<dd>C: <code>self<\/code>, bir s\u0131n\u0131f metodunun ilk parametresidir ve o metodu \u00e7a\u011f\u0131ran nesnenin kendisine referans verir. Bu sayede metot i\u00e7inde nesnenin kendi niteliklerine eri\u015filebilir ve metotlar nesneye \u00f6zg\u00fc i\u015flemler yapabilir.<\/dd>\n<dt><strong>S: <code>__init__<\/code> metodu neden \u00f6nemlidir?<\/strong><\/dt>\n<dd>C: <code>__init__<\/code> yap\u0131c\u0131 metottur ve bir s\u0131n\u0131ftan yeni bir nesne olu\u015fturuldu\u011funda otomatik olarak \u00e7a\u011fr\u0131l\u0131r. Nesnenin ba\u015flang\u0131\u00e7 durumunu ayarlamak, yani temel niteliklerini ilk de\u011ferleriyle ba\u015flatmak i\u00e7in kullan\u0131l\u0131r.<\/dd>\n<dt><strong>S: Bir s\u0131n\u0131f\u0131n birden fazla <code>__init__<\/code> metodu olabilir mi?<\/strong><\/dt>\n<dd>C: Hay\u0131r, Python&#8217;da di\u011fer baz\u0131 dillerdeki gibi metod a\u015f\u0131r\u0131 y\u00fckleme (method overloading) do\u011frudan desteklenmez. Bir s\u0131n\u0131fta sadece bir <code>__init__<\/code> metodu tan\u0131mlanabilir. Farkl\u0131 ba\u015flatma senaryolar\u0131 i\u00e7in genellikle varsay\u0131lan arg\u00fcmanlar veya s\u0131n\u0131f metotlar\u0131 (<code>@classmethod<\/code>) kullan\u0131l\u0131r.<\/dd>\n<dt><strong>S: <code>pass<\/code> anahtar kelimesi bir s\u0131n\u0131f tan\u0131m\u0131nda ne anlama gelir?<\/strong><\/dt>\n<dd>C: <code>pass<\/code>, Python&#8217;da &#8220;hi\u00e7bir \u015fey yapma&#8221; anlam\u0131na gelen bir yer tutucudur. Bo\u015f bir s\u0131n\u0131f veya metot tan\u0131mlaman\u0131z gerekti\u011finde, ancak Python&#8217;\u0131n girintili bloklar i\u00e7in en az bir ifade bekledi\u011fi durumlarda kullan\u0131l\u0131r. Kodunuzu daha sonra doldurmak \u00fczere taslak olarak b\u0131rakmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri\nPython, nesne y\u00f6nelimli programlama (NYP) paradigmas\u0131n\u0131 g\u00fc\u00e7l\u00fc bi","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-35512","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 S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python&#039;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri\" \/>\n<meta property=\"og:description\" content=\"Python&#039;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri Python, nesne y\u00f6nelimli programlama (NYP) paradigmas\u0131n\u0131 g\u00fc\u00e7l\u00fc bi\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-30T11:41:28+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=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri\",\"datePublished\":\"2025-11-30T11:41:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\"},\"wordCount\":1496,\"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-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\",\"name\":\"Python'da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-30T11:41:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri\"}]},{\"@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 S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Python'da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri","og_description":"Python'da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri Python, nesne y\u00f6nelimli programlama (NYP) paradigmas\u0131n\u0131 g\u00fc\u00e7l\u00fc bi","og_url":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-30T11:41:28+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri","datePublished":"2025-11-30T11:41:28+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/"},"wordCount":1496,"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-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/","url":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/","name":"Python'da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-30T11:41:28+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-siniflar-ve-nesneler-nesne-yonelimli-programlamanin-temelleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python&#8217;da S\u0131n\u0131flar ve Nesneler: Nesne Y\u00f6nelimli Programlaman\u0131n Temelleri"}]},{"@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\/35512","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=35512"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35512\/revisions"}],"predecessor-version":[{"id":35513,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35512\/revisions\/35513"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}