Bir nesneyi yazdırılabilir hale getirmek için kullanılabilecek iki metot bulunur.
repr(x)
, x.__repr__()
‘i çağırır: x.eval
genellikle bu metotun sonucunu orijinal nesneye geri dönüştürür.
str(x)
, x.__str__()
‘i çağırır: nesneyi tanımlayan okunabilir bir dizeye dönüştürür. Böylece bazı teknik ayrıntılara gerek olmayabilir.
Python’da repr() nedir?
Birçok tür için bu işlev, iletildiğinde aynı değere sahip bir nesne verecek bir dizge döndürme girişiminde bulunur eval()
. Aksi takdirde, temsil, ek bilgilerle birlikte nesnenin türünün adını içeren, açılı parantez içine alınmış bir dizedir. Bu genellikle nesnenin adını ve adresini içerir.
Python’da str() ne işe yarar?
Dizeler için bu fonksiyon dizenin kendisini döndürür. repr(object)
ile str(object)
arasındaki fark str(object)
her zaman eval()
için kabul edilebilir bir dizge döndürmeye çalışmaz. Daha ziyade, yazdırılabilir veya ‘okunabilir’ bir dize döndürür. Hiçbir bağımsız değişken belirtilmezse boş bir dizeyi döndürür ''
.
Örnek 1:
s = """w'o"w"""
repr(s) # Çıktı: '\'w\\\'o"w\''
str(s) # Çıktı: 'w\'o"w'
eval(str(s)) == s # SyntaxError
eval(repr(s)) == s # Çıktı: True
Örnek 2:
import datetime
today = datetime.datetime.now()
str(today) # Çıktı: '2016-09-15 06:58:46.915000'
repr(today) # Çıktı: 'datetime.datetime(2016, 9, 15, 6, 58, 46, 915000)'
Bir class yazarken bu yöntemleri geçersiz kılabilirsiniz:
class Temsili(object):
def __init__(self, x, y):
self.x, self.y = x, y
def __repr__(self):
return "Temsili(x={},y=\"{}\")".format(self.x, self.y)
def __str__(self):
return "x' {} şeklinde ve y'yi {} şeklinde temsil eder".format(self.x, self.y)
Yukarıdaki classı kullanarak aşağıdaki sonuçları elde edebiliriz:
r = Temsili(1, "Zıpla")
print(r) # __str__ yazdırır
print(r.__repr__) # __repr__: '<bound method Temsili.__repr__ of Temsili(x=1,y="Zıpla")>' yazdırır
rep = r.__repr__() # __repr__'in çıktısını yeni bir değişkene yazdırır
print(rep) # 'Temsili(x=1,y="Zıpla")' yazdırır
r2 = eval(rep) # rep'i çalıştırır
print(r2) # yeni objeden __str__ yazdırır
print(r2 == r) # 'False', çünkü farklı objeler
- 1. Python’a Giriş
- 1.1. Değişkenler oluşturma ve değer atama
- 1.2. Girintiler (indentation)
- 1.3. Veri tipleri
- 1.4. Koleksiyon Türleri
- 1.5. Kullanıcı Girdisi
- 1.6. Dahili Modüller ve Fonksiyonlar
- 1.7. Python’da Modül Nasıl Oluşturulur
- 1.8. String Fonksiyonları – str ve repr (Bu yazı)
- 1.9. Pip kullanarak harici modüllerin kurulması
- 1.10. Help – Python’da Yardım Aracı