Pythonda classtan oluşturulan objenin adını init içinde yazdırmak

Merhabalar,
Pythonda init metodu içinde class name ve oluşturulan objenin adını yazdırabilir miyiz?.

class Deneme:
    def __init__(self):
        print(f' {class.__name__()}  clası çalıştı')
        print (f' {self} objesi oluşturuldu ')
        return self

dene1=Deneme()  
print(dene1)     
class Deneme:
    def __init__(self):
        print(f' {__class__.__name__}  clası çalıştı')
        print (f' {self} objesi oluşturuldu ')

dene1=Deneme()  
print(dene1)  

Cevap için teşekkürler, sonuç aşağıdaki gibi olmalı

class Deneme:
    def __init__(self):
        print(f' {__class__.__name__}  clası çalıştı')
        print (f' {self} objesi oluşturuldu ')
        #Deneme  clası çalıştı
        # dene1 objesi oluşturuldu
dene1=Deneme()  
print(dene1) 
#Deneme  clası çalıştı
#<__main__.Deneme object at 0x7fba0a0e8510> objesi oluşturuldu 
#<__main__.Deneme object at 0x7fba0a0e8510> 

#Cevap için teşekkürler, print içinden self objesi adı çıkmalı.
#print (f’ {self} objesi oluşturuldu ')
# dene1 objesi oluşturuldu
Sonrada yapmaya çalıştığım;

  1. Deneme classından dene1 objesi(nesnesi) oluşturuldu.
  2. Deneme classından oluşturulan objelerin sayısı ve isimleri
  3. Deneme classından oluşturulan objelerin sayı, isimleri ve özellikleri(attribute)

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.

Yani:

Hayir.

Bu mumkun.

XY problemi: https://eksisozluk.com/entry/84850652

4 Beğeni

mümkün.

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.

Merhaba,

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.

class Deneme:
    nesneler = {}
    
    def __init__(self, name: str):
        self.name = name
        self.nesneler[name] = self
        
    def __repr__(self):
        return self.name
        
        
dene1 = Deneme("dene1")
dene2 = Deneme("dene2")

print(Deneme.nesneler["dene1"] == dene1)