Sihirli Yöntemler (__str__, __repr__ vb.)
Nesne davranışını özelleştirmek için Python'ın özel yöntemlerini keşfedin.
Sihirli Yöntemler (__str__, __repr__ vb.), CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 6 dersinin 6. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 6 dersten oluşur.
Sihirli Yöntemlere Giriş
Sihirli Yöntemlere Giriş
Çift alt çizgi yöntemleri olarak da bilinen sihirli yöntemler (kısaca 'çift alt çizgi'), Python'da nesnelerin belirli durumlarda nasıl davranacağını tanımlamanızı sağlayan özel yöntemlerdir.
Bu derste __str__, __repr__ ve diğerleri gibi yaygın sihirli yöntemleri nasıl kullanacağınızı öğreneceksiniz.

Sihirli Yöntemler Nedir?
Sihirli Yöntemler Nedir?
Sihirli yöntemler, nesneler üzerinde belirli işlemler gerçekleştirildiğinde otomatik olarak çağrılan, Python'da önceden tanımlanmış yöntemlerdir. __init__ veya __str__ gibi çift alt çizgileriyle tanınırlar.
__init__ Yöntemi
__init__ Yöntemi
__init__ yöntemi, yeni bir nesneyi başlatan yapıcıdır. Bir nesne oluşturulduğunda otomatik olarak çağrılır:
# Using the __init__ method to initialize attributes
class Person:
def __init__(self, name, age):
self.name = name # Initialize the name attribute
self.age = age # Initialize the age attribute
# Creating an instance of Person
person = Person("Alice", 30)
print(person.name, person.age) # Outputs: Alice 30__str__ Yöntemi
__str__ Yöntemi
__str__ yöntemi, print() çağrıldığında bir nesnenin dize gösterimini tanımlar:
# Defining the __str__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Name: {self.name}, Age: {self.age}" # String representation
person = Person("Alice", 30)
print(person) # Outputs: Name: Alice, Age: 30__repr__ Yöntemi
__repr__ Yöntemi
__repr__ yöntemi, genellikle hata ayıklama amacıyla kullanılan, bir nesnenin resmi dize gösterimini sağlar:
# Defining the __repr__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})" # Debug-friendly representation
person = Person("Alice", 30)
print(repr(person)) # Outputs: Person('Alice', 30)Sihirli Yöntemlerle İşleçleri Aşırı Yükleme
Sihirli Yöntemlerle İşleçleri Aşırı Yükleme
+ veya == gibi işleçlerin davranışını özelleştirmek için sihirli yöntemleri kullanabilirsiniz:
# Overloading the + operator with __add__
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y) # Adding two points
def __str__(self):
return f"({self.x}, {self.y})"
point1 = Point(1, 2)
point2 = Point(3, 4)
result = point1 + point2 # Calls __add__
print(result) # Outputs: (4, 6)Yaygın Olarak Kullanılan Sihirli Yöntemler
Yaygın Olarak Kullanılan Sihirli Yöntemler
Yaygın olarak kullanılan bazı sihirli yöntemler şunlardır:
__len__:len()işlevinin davranışını tanımlar.__getitem__: Liste veya sözlük gibi indekslemeye olanak tanır.__eq__:==kullanılarak yapılan eşitlik karşılaştırmasını özelleştirir.
__len__ ve __getitem__ Kullanımı
__len__ ve __getitem__ Kullanımı
Özel bir nesnenin uzunluğunu tanımlamak için __len__ yöntemini, bu nesneyi indekslenebilir hâle getirmek için __getitem__ yöntemini kullanabilirsiniz:
# Using __len__ and __getitem__ in a custom class
class CustomList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items) # Defines the behavior of len()
def __getitem__(self, index):
return self.items[index] # Enables indexing
custom_list = CustomList([1, 2, 3])
print(len(custom_list)) # Outputs: 3
print(custom_list[1]) # Outputs: 2Sihirli Yöntemlerle İlgili Yaygın Hatalar
Sihirli Yöntemlerle İlgili Yaygın Hatalar
Kaçınmanız gereken bazı hatalar şunlardır:
- Bir sihirli yöntemi, amaçlanan davranışına uygun olmayacak şekilde tanımlamak.
- İşleçleri gereksiz yere aşırı yüklemek.
- Özel veri türlerinde gerekli sihirli yöntemleri implementing etmeyi unutmak.
Ne Öğrendik?
Ne Öğrendik?
Bu derste şunları öğrendiniz:
- Sihirli yöntemlerin ne olduğunu ve neden yararlı olduklarını.
__init__,__str__ve__repr__gibi yaygın sihirli yöntemlerin nasıl kullanılacağını.- Sihirli yöntemleri kullanarak işleçlerin nasıl aşırı yükleneceğini.
Harika iş çıkardınız! Şimdi sonraki konuya geçelim.

Sıkça Sorulan Sorular
“Sihirli Yöntemler (__str__, __repr__ vb.)” dersi ücretsiz mi?
Evet — “Sihirli Yöntemler (__str__, __repr__ vb.)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 6 dersten oluşur.
“Sihirli Yöntemler (__str__, __repr__ vb.)” dersinde ne öğreneceğim?
Nesne davranışını özelleştirmek için Python'ın özel yöntemlerini keşfedin. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 6. dersidir.
“Sihirli Yöntemler (__str__, __repr__ vb.)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sınıflar ve Nesneler
- Öznitelikler ve Yöntemler
- Kalıtım
- Çok Biçimlilik
- Kapsülleme ve Soyutlama
- Sihirli Yöntemler (__str__, __repr__ vb.)