Rehber Python'da self, __init__, __str__, __len__ ve __eq__

Herkese merhaba. Bugünkü konumuz Python'da self ve bazı özel metotlar.

Genelde class tanımlarında gördüğümüz "self" aslında o classtan türetilen nesnedir. Yani nesne içindeki verilere erişmemizi ve değiştirmemizi sağlar.

Örneğin aşağıdaki programda Person classından nesneler türetilmiş ve kullanılmıştır:
Python:
class Person:
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname

first_person = Person("Example", "Example")
second_person = Person("Example2", "Example2")

print(f"First Person: {first_person.name} {first_person.surname}\nSecond Person: {second_person.name} {second_person.surname}")
Çıktı:
Kod:
First Person: Example Example
Second Person: Example2 Example2
Tabi yukarıdaki örnekte "__init__" kullandık. Bu metot constructor metottur. Yani nesne türetildiğinde çağırılan ilk metot budur. Yukarıdaki örnekte parametre olarak "name" ve "surname" verdilmiş, türetirken gerekli parametreleri belirlenmiş ve o nitelikte nesneler türetilmiştir.
"str" metodu çağırıldığında döndürülen değeri temsil eder. Yani "str" metodu, "__str__" metodunun döndürdüğü değeri döndürür.

Örneğin aşağıdaki programda Person classına "str" tanımlanmış ve gerekli bilgileri yazdırırken kolaylık sağlanmıştır:
Python:
class Person:
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname

    def __str__(self):
        return f"{self.name} {self.surname}"

first_person = Person("Example", "Example")
second_person = Person("Example2", "Example2")

print(f"First Person:", first_person, "\nSecond Person:", second_person)
Çıktı:
Kod:
First Person: Example Example
Second Person: Example2 Example2
"len" metodu çağırıldığında döndürülen metottur. Yani "len" metodu, "__len__" metodunun döndürdüğü değeri döndürür.

Aşağıdaki örnekte "__len__" Person sınıfındaki isim ve soyadının birleştiğindeki uzunluğunu döndürmüştür:
Python:
class Person:
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname

    def __str__(self):
        return f"{self.name} {self.surname}"
   
    def __len__(self):
        return len(str(self))

first_person = Person("Example", "Example")
second_person = Person("Example2", "Example2")

print(f"First Person:", first_person, "/ Lenght=", len(first_person), "\nSecond Person:", second_person, "/ Lenght=", len(second_person))
Çıktı:
Kod:
First Person: Example Example / Lenght= 15
Second Person:Example2 Example2 / Lenght= 17
"=="in davranışını belirleyen metottur. Yani eşitliklerdeki şartı belirler. Aşağıdaki örnekte iki tarafın isim ve soyadlarının aynı olup olmadığı kontrol edilmiştir:
Python:
class Person:
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname

    def __str__(self):
        return f"{self.name} {self.surname}"
   
    def __len__(self):
        return len(str(self))
       
    def __eq__(self, right):
        return self.name == right.name and self.surname == right.surname

first_person = Person("Example", "Example")
second_person = Person("Example2", "Example2")

print(first_person == second_person)
print(first_person == Person("Example", "Example"))
Çıktı:
Kod:
False
True
 
Son düzenleyen: Moderatör:

Technopat Haberler

Geri
Yukarı