Python programlama dilinde sınıfların ve nesnelerin tanımlanması ve kullanımı ile ilgili bilgi edinin Bu makale, Python'da sınıf ve nesne yapısını anlamak isteyenler için tam olarak tasarlandı Detaylar burada!

Python, nesne yönelimli bir programlama dili olarak bilinir ve programlama dünyasında yer alan diğer dillere kıyasla daha kolay bir syntax yapısına sahip olduğu için özellikle tercih edilir. Python'daki sınıflar ve nesneler, nesne yönelimli programlamanın temel yapı taşlarıdır.
Sınıflar, programcıların verileri ve işlevselliği bir araya getirerek programlama projelerinde organize etmesine yardımcı olur. Python'da, sınıfların tanımlanması 'class' anahtar kelimesi ve sınıf adı kullanılarak belirlenir. Nesneler, sınıflardan örneklem yaratılarak tanımlanır ve nitelikleri aracılığıyla özelliklerini saklayabilirler. Bu nitelikler örnek nitelikleri ve sınıf nitelikleri olarak adlandırılır.
- Örnek nitelikleri, bir nesne örneğine özgü niteliklerdir. Başka bir nesne için örnek nitelikleri tanımlanabilir.
- Sınıf nitelikleri, bir sınıfın tüm örnekleri için kullanılan niteliklerdir. Bu nitelikler, bir sınıfın tüm örnekleri arasında paylaşılır.
Nesneler, metotlar aracılığıyla işlevsellik sağlayabilirler. Bu metotlar örnek metotları ve sınıf metotları olarak adlandırılır. Örnek metotları, nesne örnekleri için özgün olarak tanımlanabilirken, sınıf metotları bir sınıfın örnekleri aracılığıyla kullanılabilir.
Python'da nesneler, sınıflardan örnekleme yoluyla yaratılırlar. Bir nesne örneği yaratıldığında '__init__' metodu otomatik olarak çağrılır ve örnekleme yöntemi tanımlanabilir. Sınıflara yapıcı fonksiyonlar tanımlanarak özel nesneler yaratılabilir. Sınıf örneklemesi ile bir nesne yaratılırken '__new__' metodunun içi çalıştırılır. '__init__' ve '__new__' metodları arasındaki farkların da Python'daki sınıfların ve nesnelerin kodlanmasında önemli bir rol oynadığı unutulmamalıdır.
Sınıfların Tanımlanması
Python'da, sınıflar belirli işlevleri veya özellikleri olan nesneleri gruplamak için kullanılır. Sınıflar, class anahtar kelimesi ve bir sınıf adı kullanılarak tanımlanır. Sınıf adlarının genellikle büyük harflerle başlaması kabul edilir.
Sınıf tanımlaması, sınıf içindeki nitelikler ve metodlar ile birlikte yapılır. Sınıf nitelikleri, tüm sınıf örnekleri arasında paylaşılırken, örnek nitelikleri sadece belirli bir sınıf örneği için geçerlidir. Benzer şekilde, örnek metotları sadece belirli bir örnekte çalışırken, sınıf metotları her örnekte aynı işlevi yerine getirir. Bu farklılıkların iyi anlaşılması, Python'da sınıfların doğru kullanımı açısından çok önemlidir.
Nesnelerin Tanımlanması
Python'da nesneler, sınıflardan örneklem yaratılarak tanımlanır. Örneklem, bir sınıf adı kullanarak yaratıldığında bir nesne oluşturulur. Örnekleme işlemi "n = SinifAdi ()" kullanılarak gerçekleştirilir. Bu örnekleme işlemi, nesnenin özellikleri ve işlevselliğinin kullanımını sağlıyor, yani nesnenin kullanımını mümkün hale getiriyor.
- Örneğin:
class Person: |
---|
def __init__(self, name, age): |
self.name = name |
self.age = age |
def get_info(self): |
print("Name:", self.name, "| Age:", self.age) |
Yukarıdaki örnekte, "Person" adlı bir sınıf tanımlanmıştır. "name" ve "age" nitelikleri olan bir örnek oluşturduk. Ayrıca, "get_info" adlı bir metot tanımladık. Bu metot, "name" ve "age" nitelikleri aracılığıyla nesnenin bilgisini alma işlevselliğine sahiptir. Nesne oluşturma işlemi "p = Person ('John', 30)" kullanılarak gerçekleştirilir.
Bu nesne örnekteki sınıf özelliklerine sahip olacak ve "get_info" yöntemi aracılığıyla nesne hakkında bilgi edinebilecektir. Nesneler, özellikleri ve işlevselliği aracılığıyla birbirinden farklı olabilirler. Bu sayede, nesneler farklı amaçlar için kullanılabilirler.
Nesne Nitelikleri
Nesne Nitelikleri:
Bir nesnenin nitelikleri, onun özelliklerini saklayarak işlevselliğini artırır. Python'da bir nesnenin nitelikleri, nesne adı aracılığıyla kolayca erişilebilir. Nesne nitelikleri, __init__ metodu içinde tanımlandığında otomatik olarak yaratılır veya sonradan eklenebilir.
Bir örnek olarak, bir araba nesnesi düşünelim. Arabanın model adı, model yılı, km durumu, vites tipi, renk gibi nitelikleri olabilir. Bu nitelikler, nesne oluşturulduktan sonra kolayca erişilebilir. Örneğin, "car.model" ifadesi ile arabanın model adı elde edilebilir.
Nesne Niteliği | Açıklama |
---|---|
__init__() | Bir nesne örneği oluşturulduğunda otomatik olarak çağrılır |
__dict__ | Nesne nitelik ve değerlerini sözlük olarak döndürür |
__del__() | Nesne silindiğinde otomatik olarak çağrılır |
Ayrıca, bir nesnenin niteliği başka bir nesne de olabilir. Bu, bir sınıf içinde bulunan bir örnek niteliği olarak tanımlanır. Örneğin, bir araba nesnesinde motor nesnesi olabilir.
Örnek Nitelikleri
Python'da nesnelerin özelliklerini saklamak için kullanılan niteliklerin, herhangi bir örnek tarafından kullanılabilen örnek nitelikleri olarak tanımlanması mümkündür. Örnek nitelikleri, nesne örneği yaratıldığında ve sınıf içinde tanımlandığında otomatik olarak yaratılır. Örnek nitelikleri, sınıfın diğer örnekleri veya diğer sınıflardaki örnekler tarafından kullanılabilen verileri tutabilir.
Örnek nitelikleri, sınıfın özel nitelikleri olarak kategorize edilebilir. Örneğin, bir sınıf içindeki bir örnek niteliği "ad" olduğunda, o sınıftaki tüm örneklerin "ad" niteliği olacaktır. Ancak, bu nitelik her örnek için farklı bir değere sahip olabilir. Örneğin:
Kod: | |
class Araba: | |
def __init__(self, marka): | |
self.marka = marka | |
self.hiz = 0 | |
araba1 = Araba("Volkswagen") | # marka niteliği |
araba2 = Araba("BMW") | # marka niteliği |
Bu örnekte, "Araba" sınıfında marka adı niteliği tanımlanmıştır. Nesne örnekleri "araba1" ve "araba2" yaratıldığında her bir örnek için farklı bir marka adı tanımlanabilir. Örnek nitelikleri, sınıfın herhangi bir metodunda kullanılabilir ve bu nitelikler sınıfın diğer özellikleriyle birlikte birçok farklı amaç için kullanılabilir.
Sınıf Nitelikleri
Sınıf nitelikleri, bir sınıfın tüm örnekleri arasında paylaşılan niteliklerdir ve her örnek tarafından paylaşılır. Bu, örnekler arasında bilgi paylaşımına olanak tanır. Bir sınıf niteliği, sınıfın içinde tanımlanır ve tüm nesneler arasında paylaşılır.
Bir sınıf niteliği, örnek niteliklerinden farklı olarak, 'self' kullanılmadan tanımlanır. Genellikle değişmeyen sabit nitelikler olarak tanımlanırlar. Örneğin, bir araba sınıfında 'tekerlek_sayısı' gibi bir sınıf niteliği tanımlayabilirsiniz. Bu sınıf niteliği, tüm araba örnekleri tarafından paylaşılır ve değiştirilemez.
Sınıf nitelikleri, özel bir amaç için kullanılır ve tüm örneklerin paylaşması gereken verileri depolar. Bu, özel durumlar veya genel bakış açısıyla özellikleri saklamak için kullanışlı bir özelliktir. Bir sınıf niteliği, sınıfta yapılan her işlem için tüm örnekler arasında tek bir değerin kullanılması gerektiğinde gereklidir. Örnek olarak, bir banka hesap sınıfında, tüm hesap örneklerinin banka adını paylaştığını düşünebilirsiniz.
Bir sınıf niteliği tanımlamak için, sınıfın içindeki 'class' anahtar kelimesi ile birlikte, nitelik adı kullanılır. Örnek olarak, aşağıdaki kod, bir araba sınıfı için tekerlek_sayısı niteliğini tanımlar:
class Araba: #sınıf niteliği tekerlek_sayısı = 4
Bir sınıf niteliği çağırmak için, sınıf adı ve nitelik adı kullanılır. Örneğin:
#araba sınıfı tanımlanırclass Araba: #sınıf niteliği tanımlanır tekerlek_sayısı = 4 #Araba sınıfından bir örnek oluşturuluraraba1 = Araba() #sınıf niteliği çağrılırprint("Araba1 tekerlek sayısı: ", araba1.tekerlek_sayısı)
Bu kod, 'tekerlek_sayısı' sınıf niteliğinin tüm araba örnekleri tarafından nasıl paylaşıldığını göstermektedir.
Nesne Metotları
Python'da sınıf ve nesnelerin sahip olduğu metotlar özellikle önemlidir. Nesne metotları, bir nesne örneği üzerindeki özel işlevlerdir. Sınıf metotları ise, bir sınıfın tüm örneklere uygulayabileceği işlevlerdir. Bir sınıf içinde aynı adı taşıyan iki farklı metot tanımlayabilirsiniz. Bunlardan biri örnek metodu olarak adlandırılırken, diğeri sınıf metodu olarak adlandırılır.
Python'da, sınıf yöntemleri ve örnek yöntemleri arasındaki ayrım, kullanılan parametre listesiyle ilgilidir. Normalde, örnek yöntemlerine çağrı yapıldığında, bu yöntem örnekleme üzerinde işlem yapar ve örnekle ilgili niteliklere erişebilir. Sınıf yöntemleri ise, genellikle, bir sınıfa ilişkin olarak, örneklere ve sınıftaki niteliklere erişmek için kullanılır.
Python'da, bir sınıfın bir başka sınıftan miras alabilmesi için, miras alınan sınıfı, ana sınıfın parantezleri içinde belirtmek gerekir. Böylece miras alınan sınıfın tüm niteliklerini ve metotlarını alabilirsiniz. Bir sınıfın bir başka sınıftan miras alması, kodun daha az yazılmasına ve daha az hata yapılmasına yardımcı olabilir.
Örnek Metotları
Nesnelerin metotları aracılığıyla özgün işlevsellik sağlanabilir. Örnek metotları, nesne örnekleri için özelleştirilmiş metotlardır. Bir örnek metodu, sadece bir nesne örneği için özgündür ve başka bir nesne örneği için farklı bir şekilde tanımlanabilir.
Örnek metotları tanımlamak için, öncelikle sınıfın __init__ metodu içinde nesne niteliklerini tanımlamak gerekir. Daha sonra, örnek metodu tanımlamak için metot adı ve 'self' parametresi kullanılır. 'Self' parametresi, örnek metodunun çağrıldığı nesneyi işaret eder ve diğer parametreler ile birlikte kullanılabilir.
Örnek metotları, nesnenin niteliklerine erişmek veya değiştirmek için kullanılabilir. Ayrıca, bir nesne örneği ile ilgili işlemleri gerçekleştirmek için de örnekleme metodu olarak kullanılabilirler.
Bir örnek metodu örneği aşağıdaki gibidir:
Kod | Açıklama |
---|---|
class Araba: | Sınıf tanımı |
def __init__(self, marka, model, renk): | Nesne niteliklerinin tanımlanması |
self.marka = marka | |
self.model = model | |
self.renk = renk | |
def info(self): | Örnek metodu tanımı |
return "Bu aracın markası " + self.marka + ", modeli " + self.model + " ve rengi " + self.renk + "." |
Yukarıdaki örnek, Araba sınıfına ait bir örnekleme metodu tanımlamaktadır. Bu metot, nesne örnekleri için özgün bir şekilde çalışır ve nesnenin marka, model ve renk niteliklerinin değerlerini döndürür.
Sınıf Metotları
Sınıf metotları, tıpkı örnek metotları gibi sınıflar tarafından tanımlanır. Bu metotlar, sınıfın örneklerine değil, sınıfın kendisine özgüdür. Sınıf metotları, bir sınıfın öğeleri üzerinde işlem yapar ve genellikle bir sınıfın öğeleri ile ilgili veri sağlar. Sınıf metotları, önceden tanımlanmış değerlere veya öğelere dayalı olarak yeni bir nesne oluşturabilirler.
Sınıf metotları, genellikle sınıf seviyesinde kullanılır ve bu nedenle, self parametresi yerine cls (class) parametresi kullanılır. Ayrıca, sınıf metotları, sınıfın örnekleriyle çalışmak yerine, doğrudan sınıfın kendisiyle çalışır. Sınıf metotları, genellikle sınıfın özelliklerini ve davranışını değiştirmek için kullanılır.
Sınıf metotları, sınıfın oluşturulması sırasında tanımlanır ve kullanıcılar tarafından direkt olarak çağrılır. Bu metotların kullanımı, sınıftaki öğelerin ayrıntılı bir şekilde denetlenebilmesini sağlar. Ayrıca, sınıf metotları sınıfın tanımlanmasından sonra değiştirilebilir veya güncellenebilir. Bu nedenle, sınıf metotları, Python programcıları arasında oldukça yaygındır.
Nesne Örnekleme
Nesne örnekleme, sınıf tanımlandıktan sonra kullanılabilir hale getirilen bir nesne yaratma işlemidir. Bu işleme örnekleme veya instantiation denir. Sınıfın yapısı ve oluşturduğu nesneler arasındaki ilişki, nesnelerin özelliklerini ve davranışlarını belirler.
Nesne örnekleme, sınıf adı kullanılarak yapılır. Yeni bir nesne yaratmak için sınıf adının sözdizimi şu şekildedir:
Sözdizimi: | nesne_adı = sınıf_adı() |
---|
Burada, "nesne_adı" oluşturulan nesnenin bir adıdır ve isteğe bağlıdır. "sınıf_adı()" ise sınıfın adının yanına parantez kullanılmasıdır. Bu, sınıftan bir nesne örneği yaratacak olan örneklem fonksiyonudur.
Örneğin; "Kedi" adında bir sınıf tanımladığımızı varsayalım. Bu sınıfın bir örneği "Pamuk" adını taşıyabilir ve sınıfın niteliklerine erişebilir:
class Kedi:
-
def __init__(self, isim):
-
self.isim = isim
kedi_nesnesi = Kedi("Pamuk")
Bu örnekte, "isim" adlı bir nitelik __init__ metodu aracılığıyla Kedi sınıfına eklenmiştir. "Pamuk" adında bir kedi nesnesi örneği yaratmak için örneklem fonksiyonu kullanılarak sınıf adından bir nesne yaratılmıştır.
__init__ Metodu
Python'da bir nesne örneği yaratıldığında, __init__ metodu otomatik olarak çalışır. Bu metot, bir sınıf tanımlanırken belirtilen tüm nitelikleri veya değerleri nesne örneği için ayarlamak için kullanılır. __init__ metodu, sınıfın yapısı ve amaçlarına bağlı olarak farklı şekillerde kullanılabilir.
Örneğin, bir sınıfın öbjelerini özel bir şekilde başlatmak istiyorsanız, __init__ metodu bu amaç için kullanılabilir. Örneğin, bir Oyun sınıfında her oyun kurulduğunda, oyuncuların isimlerinin, puanlarının ve diğer özelliklerinin saklandığı özellikler başlatılabilir.
__init__ metodu ayrıca, sınıfın özellikleri için varsayılan değerler atamanızı sağlar. Bu şekilde, nesne örneği için özellikler tanımlandığında, varsayılan değerler atanacaktır. Örneğin, bir Kitap sınıfında, her kitap yaratıldığında varsayılan olarak "Yayıncılık tarihi" niteliği "2021" olarak tanımlanabilir.
__init__ metodu, aynı zamanda nesne örneği oluşturulmadan önce başka işlemler yapmak için de kullanılabilir. Örneğin, bir Öğrenci sınıfında __init__ metodu, öğrencinin kaydını yapmak, sınıf listelerine eklemek ve benzeri işlemleri yapmak için kullanılabilir.
Örnekleme Yöntemleri
Örnekleme yöntemi, bir sınıfın örneklerinde tekrar eden işlemlerin kodlanmasını önlemek için kullanılır. Bu yöntem, sınıfın örnekleme yöntemiyle birlikte çağrıldığında, önce bir nesne örneği oluşturur ve bu nesneye bir dizi parametre sağlar. Bu yöntem, örnek niteliklerini başlatmak için kullanılır.
Örnekleme yöntemi, __init__ metoduna benzer şekilde tanımlanır, ancak farklı bir ad kullanılır. Ayrıca, self parametresi içermez. Bunun yerine, ilk parametre olarak cls kullanılır.
Örnekleme yöntemi, başka bir nesneyi kullanarak örnek niteliklerini başlatmak için de kullanılabilir. Örneğin, bir sınıfın örneklerinin bir kopyasını yaratabilirsiniz.
- Örnekleme yöntemleri, örnekleme sırasında isteğe bağlı parametreler alabilir.
- Örnekleme yöntemleri, sınıf niteliklerini değiştirerek tüm örneklerin özelliklerini değiştirebilir.
- Örnekleme yöntemleri, nesne örneklemesini özelleştirmek için kullanılabilir.
Örnekleme yöntemlerinin bir sınıf için tanımlanması, o sınıftan yaratılan tüm örnekler için geçerlidir. Örnekleme yöntemi, sınıfın nesnelerini otomatik olarak başlatmak için kullanılır ve sınıfın nesnelerine işlevsellik sağlar. Bu yöntem, nesnelerin inşası için gereken özelleştirilmiş parametreleri sağlamak için de kullanılabilir.
Yapıcı Fonksiyonlar
Yapıcı fonksiyonlar, sınıfların özel nesnelerin yaratılması için kullanılabilen özel bir yöntemdir. Bu fonksiyonlar, sınıf örneklendiğinde otomatik olarak çağrılır ve özel bir nesne yaratmak için kullanılır.
Yapıcı fonksiyonların Python'da özel bir adı vardır: __init__. Bu metod, bir nesne yaratıldığında ilk çalıştırılan fonksiyondur ve nesneyi özelleştirmek için kullanılır.
__init__ metodu, örnek niteliklerinin ve nesnelerin yaratılması için uygun bir yerdir. Örneğin, bir nesnenin adını veya yaşını belirleyerek bu yöntemi kullanabilirsiniz. Özellikle, __init__ metodunu kullanarak bir nesnenin özelliklerini aldığında veya başka bir sınıftan kalıtımsal olarak özellikleri alırken bu metodu kullanabilirsiniz.
__new__ metodu ise, bir nesne yaratılmadan önce çalıştırılan ilk yöntemdir. Bu metod, sınıf örneğine dayalı olarak bir nesne yaratmak için kullanılır. __new__ metodunu kullanarak özel bir nesne yaratıp yaratmadığınız, __init__ metodu ile belirlenir.
Bir sınıfta, hem __init__ hem de __new__ metodlarını tanımlayabilirsiniz. Bu yöntemleri birleştirerek, özel özelliklere sahip bir nesne yaratabilirsiniz.
Yapıcı fonksiyonların kullanımı, sınıf ve nesne yönetiminin daha iyi anlaşılması için önemlidir. Bu yöntemleri kullanarak, Python'da sınıflar ve nesneleri daha etkili bir şekilde yönetebilirsiniz.
__new__ Metodu
Python'da sınıflar ve nesneler, özelliklerini ve işlevselliğini tanımlamak için kullanılan önemli araçlardır. Sınıflar, class anahtar kelimesi ve sınıf adı kullanılarak tanımlanır. Nesneler ise sınıflardan örneklem yaratılarak tanımlanır. Nesnelerin yaratılması sürecinde kullanılan __new__ metodu, oldukça önemlidir. Sınıf örneklemesi ile bir nesne yaratılırken, __new__ metodunun içi çalıştırılır.
__new__ metodu, bir nesnenin yaratılma sürecini kontrol etmek için kullanılır. Bu metot, sınıftan yeni bir örnek yaratıldığında otomatik olarak çağrılır. __new__ metodunun görevi, bellek ayırma ve nesnenin özelliklerinin ayarlanması gibi işlemleri gerçekleştirmektir. __new__ metodunun geri dönüş değeri, yeni oluşturulan nesnedir.
Bir sınıfa __new__ metodu eklemek için, metodu sınıfta tanımlamak ve oluşturulacak objeye ait özellikleri bu metodda ayarlamak gerekiyor. __new__ metoduna argümanlar geçirilebilir ve bu argümanlar, sınıfın yapıcısına (constructor) geçirilebilir.
__new__ metodunun yaratıcı fonksiyon (__init__) metoduyla karıştırılmaması gerekiyor. __init__ metodu, nesne yaratıldıktan sonra çağrılır ve nesnenin özelliklerinin ayarlanması için kullanılır. __new__ metodunun görevi ise, sadece nesne yaratma işlemidir.
__new__ metodunun kullanımı, belirli durumlarda oldukça faydalıdır. Bir nesne yaratılmadan önce, özelliklerinin kontrol edilmesi gerekiyorsa __new__ metoduna ihtiyaç duyulur. Bu yöntem, özellikle gelişmiş programlama teknikleri ve tasarımlar kullanıldığında oldukça faydalıdır.
__init__ ve __new__ Metodlarının Farkları
Python'da sınıfların ve nesnelerin tanımı ve kullanımı hakkında bilgi sahibi olmak, yazılım dünyasında temel bir beceridir. Sınıflar genellikle nesnelerin kalıpları olarak düşünülürler ve nesneler ise, bu kalıpları kullanarak oluşturulan gerçek örneklerdir. Bu durumda, __init__ ve __new__ metodları, sınıf yapısında oldukça önemli yer tutarlar ve birbirlerinden ayrılan farklı görevleri vardır.
__new__ metodu, nesne örneğinin yaratılması sırasında çağrılır ve örneğin başlangıç değerlerinin tanımlanmasına izin verir. Bu metot, bize yapıcı öğeleri programlamada daha fazla kontrol sağlar. Yani, örneğin nesnelerin başlatılmasında kullanılan varsayılan parametreler belirlenebilir. Ancak, __new__ metodunun geri döndürdüğü değer, mutlaka bir nesne olmak zorunda değildir. Bu nedenle, __new__ metodu daha derin bir anlayış gerektirir.
Öte yandan, __init__ metodu, nesne örneğinin yaratıldığı sırada çağrılmaktadır. Bu metot, nesnenin niteliklerinin başlatılmasında kullanılır ve nesnenin özelliklerini belirler. Bu metot, tamamen nesne örneği ile ilgili verileri işlemek için tasarlanmıştır. Yani, örneğin nesnenin ihtiyacı olan tüm nitelikler, __init__ metodu yoluyla belirlenir ve başlangıç değerleri atanır. Bu metot, yalnızca başlangıç değerleri atamakla kalmaz, aynı zamanda nesneler üzerinde işlevler de sağlayabilir.
Özetle, __new__ ve __init__ metodları arasındaki temel fark, __new__ metodunun nesne örneğinin yaratılması sırasında çağrılması, __init__ metodunun ise oluşan nesnenin nitelikleri üzerinde belirleme yapılmasıdır. Bu farklılıklar, nesne örneği yaratmadan önce özelliklerin tanımlanmasına izin verirken, nesnelerin başlatılması sırasında ise özelliklerin atanması için fırsatlar sunar.