Python __str__ and __repr__ methods

Merhaba, bu yazıda __str__ ve __repr__ method’larına bakacağız.Python programlama dilinde bazı standart gelen önemli methodlar vardır. Örneğin __init__ methodu bir class oluşturduğumuzda hazır olarak ekleyebileceğimiz bir metottur. Bu method ayrıcalıklı olarak çağırılmaya ihtiyaç duymaz.Şimdi bir örnek ile açıklayalım.
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

Ali = Person("Ali",55)
print(Ali)
Burada görüldüğü gibi, print sonucumuz değişik bir çıktı veriyor. Aslında bu çıktı bize Ali objesini göstermekte. Bu çıktı bütün class objelerinin standart String çıktısıdır aslında.Bunu daha mantıklı ve programımız için okunabilir bir şekle almamız gerekebilir. Bu durumda __str__ method’una ihtiyaç duyarız. Bu methodu class’ımızın içine implemente ettiğimizde artık yeni bir obje oluşturduğumuz taktirde bu methodun sonundaki return ifadesinin sonucunu döner.Şimdi örnek ile gösterelim,
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age


    def __str__(self):
        return f"Person {self.name},{self.age}"

Ali = Person("Ali",55)
print(Ali)
Görüldüğü gibi biz method’u çağırmadığımız halde yeni bir obje oluşturduğumuzda __str__ methodu çalışmış oldu.Bir diğer method olan __repr__ daha çok debug işlemlerinde kullanılıyor. __str__ ile benzer özellikleri taşır, ancak iki method da kodun içinde yazılmış ise, obje oluştuğunda __str__ methodu çalışır.
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age


    #def __str__(self):
    #    return f"Person {self.name},{self.age}"

    def __repr__(self):
        return f"<Person('{self.name}',{self.age})>"

Ali = Person("Ali",55)
print(Ali)
Bir başka yazıda, görüşmek üzere.https://denizparlak.net/2021/01/02/python-flask-wtform/

About Deniz Parlak

Hi, i’m Security Data Scientist & Data Engineer at My Security Analytics. I have experienced Advance Python, Machine Learning and Big Data tools. Also i worked Oracle Database Administration, Migration and upgrade projects. For your questions [email protected]

Leave a Reply

Your email address will not be published. Required fields are marked *