Python - Nesneyi kullanıcı verilerinden otomatik oluşturma

Arkadaşlar herkese merhabalar,

Pyhton’da daha çok yeniyim. İlk tanıştığım programlama dili Pyhton:) Takıldığım bir noktada size danışmak istedim.

class Book:
    counter = 0
    def __init__(self, name, author, publisher, year):    
      self.name = name
      self.author = author
      self.publisher = publisher
      self.year = year
      Book.counter += 1
      

book_1 = Book('İnsanın Anlam Arayışı', 'Viktor Emil Frankl', 'Okyanus Yayın', 2010)
book_2 = Book('Anne Baba ve Çocuk Arasında', 'Haim Ginott', 'Okyanus Yayın', 2012)
book_3 = Book('Ateş Bahçeleri', 'Cengizhan Orakçı', 'Ötüken Neşriyat', 2009)

Yukarıda, kendim oluşturmaya çalıştığım kütüphane uygulaması için oluşturduğum sınıf ve nesneleri görebilirsiniz. Fakat benim burada yapmak istediğim, nesneleri kullanıcı girişi ile oluşturabilmek. Yani nesne değişkenlerini kullanıcıdan aldığım veriler ile tanımlamak istiyorum ve her seferinde sistemin otomatik yeni bir nesne oluşturmasını istiyorum. Hatta bunları list ya da tuple şeklinde bir veri olarak kaydedebilirsem, benim için çok daha iyi olur. Yine herhangi bir veriyi append komutu ile bir tuple’ye ekleyebilirken, nesne verilerini nasıl ekleyeceğimi kafamda oturtamadım.

Burada nesne verilerini, input ile çekebiliyorum. Bunda bir sorun yok fakat nesne adını (örn: book_1), input ile almam mümkün olmuyor. Burada sistemin otomatik nesneyi oluşturması gerekiyor sanırım, mantığını tam kuramadım.

Bana bu konuda yol göstererek yardımcı olabilirseniz çok sevinirim.

Yeni değişken oluşturmadan yapma galiba sadece sql ile oluyor. Başka bir yol varsa da ben bilmiyorum

Üstadım merhabalar, bu konu ile ilgili stackoverflow üzerinde bir kaç araştırmam oldu fakat istediğim işi bir türlü yaptıramadım. Ben tam olarak olayın mantığını çözemiyorum sanırım. Sınıfın altına bir fonksiyon tanımlayarak halletme gibi yöntemleri var fakat ben kafama oturtamadım bir türlü. Oturmayınca da haliyle kendi koduma uyarlayamıyorum.

Stackoverflow’daki konunun linkini atarmısın? Daha anlaşılır bir şekilde anlatmaya çalışırım.

Buyrunuz :slight_smile:

Bu konu otomatik olarak yeni bir;

* = Book(*)

oluşturmayı anlatmıyor

book = Book(input(), input(), input(), input())

veya

name = input("Name: ")
author = input("Author: ")
book = Book(name, author, "Gollancz", 2022)
while True:
    book = Book(input("Name: "), "aib", "(self-published)", 2022)
#          ^^^^ dongunun her iterasyonunda yeni bir nesne
    if Book.counter >= 3:
        break
books = []
for book_number in range(3):
    book = Book(..., ..., ..., ...)
    books.append(book)

list. Tuple’a bir sey ekleyemezsin.

book_1 = Book('İnsanın Anlam Arayışı', 'Viktor Emil Frankl', 'Okyanus Yayın', 2010)
foo = [1, 2, 3]
foo.append(book_1)

Nesne verilerinin diger verilerden hic bir farki yok. Hatta aslinda her sey “nesne verisi”.

Cunku degisken adi kodda, calisan programda degil. Calisan programa alabilirsin:

nesne_adi = input("Nesne adi: ")
book_1 = Book('İnsanın Anlam Arayışı', 'Viktor Emil Frankl', 'Okyanus Yayın', 2010)

Ama alip ne yapacaksin?

Bu arada sana locals vs. ile reflection kullanmani tavsiye eden cevaplar cikacaktir, onlari ciddiye alma.
Nesne isimlerinin anahtar oldugu dict kullanmani tavsiye eden de cikacaktir. Dogrusu bu, fakat senin icin henuz degil.

Senin once bu soruyu cevaplaman gerekiyor:

Neden gerekiyor? Ne yapmak istiyorsun? input("Nesne adi: ") yazman neden mumkun olmasin?

1 Beğeni