self’i yazdırmak için repr fonksiyonundan faydalanılabilir.
Değişkenler ve adları, işaret ettikleri nesnelerden bağımsızdırlar. Aynı nesne birden fazla değişkene atanabilir. Dolayısıyla değişken veya değişken adı ile nesne arasında otomatik bir bağlantı kurmaya çalışmak doğru değil. Nesnenin bir adı olması gerekiyorsa eğer bu onun bir niteliği olarak atanmalı.
Teşekkürler, cevabınızı anlamadım.
init metodunun içinde iken , oluşturulan nesnenin (self) adını almanın bir yolu yok mu?
Her oluşturulan nesneyi adıyla bir listeye eklemek mümkün değil mi?
Nesnenin adi <__main__.Deneme object at 0x7fba0a0e8510>.
Sinifin adi Deneme. dene1 rastgele bir degiskenin adi. Deneme.__init__ bitene kadar dene1’in Deneme ile bir alakasi yok bile.
class Foo:
def __init__(self):
print(f"{__class__.__name__} is initialized")
print(f"{self} is initialized")
def __repr__(self):
return f"{__class__.__name__} instance"
ancak __init__ içerisinde instance adı almak geleneksel yollarla pek mümkün değil. __init__ fonksiyonu bu bilgiye erişemez. hatta emin olmamakla birlikte herhangi bir magic method ile bunu yapmak mümkün değil.
obje oluşturulduktan sonra class dışında yapmak yanlış hatırlamıyorsam inspect modülüyle mümkün ama bir yerde inspect mdülünün performansı kötü anlamda epey etkilediğini okumuştum.
Arkadaşlar gerekli açıklamaları yapmışlar. Son olarak bir özet geçmeme izin verin lütfen.
Ekrem Bey ve aib Bey burada doğru söylüyorlar.
dene1 = Deneme()
dene1 = 1
dene1 bir identifier yani = işaretinin sol tarafında kalan bir değişken işaretçisidir yani tanımlayıcıdır. Ve gördüğünüz gibi Python’da bir tanımlayıcıyı farklı veri tipleri için tekrar kullanabiliriz.
O halde dene1 tanımlayıcının değeri olan Deneme() nesnesi, tanımlayıcının kendisinden bağımsızdır. Eğer nesneye özel bir isim vermek istiyorsanız, Ekrem Bey’in mesajının devamında söylediği gibi bir örnek niteliği tanımlamanız gerekir.