Merhaba,
Alttaki kod yapısı sorunsuz çalışmaktadır.
import sqlite3
con = sqlite3.connect("database.db")
cursor = con.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS CREDIT_CARD (DATE TEXT, DETAIL TEXT, SUM FLOAT)")
con.commit()
class CreditCardRegister():
def __init__(self, date, detail, spend):
self.date = date
self.detail = detail
self.spend = spend
cursor.execute("INSERT INTO CREDIT_CARD VALUES(?,?,?)", (date, detail, spend))
con.commit()
while True:
print("ADD SUM == 1")
print("SHOW SUM == 2")
print("SHOW DEBIT == 3")
print("FOR EXIT == exit")
print()
select = input("YOUR SELECT == ")
if select == "1":
add_date = input("DATE == ")
add_detail = input("DETAIL == ")
add_spend = input("SPEND == ")
print()
ccx = CreditCardRegister(add_date, add_detail, add_spend)
else:
break
fakat aynı kod yapısını şu hale getirdiğimiz zaman çalışmıyor. sebebini az çok anladım ama anladığım sebep ve uygulamaya çalıştığım çözümler bana yardımcı olmadı
import sqlite3
con = sqlite3.connect("database.db")
cursor = con.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS CREDIT_CARD (DATE TEXT, DETAIL TEXT, SUM FLOAT)")
con.commit()
class CreditCardRegister():
name = "ALBARAKA"
def __init__(self, date, detail, spend, name):
self.date = date
self.detail = detail
self.spend = spend
self.name = name
cursor.execute("INSERT INTO CREDIT_CARD VALUES(?,?,?)", (date, detail, spend))
con.commit()
def show(self):
cursor.execute("SELECT * FROM CREDIT_CARD")
credit_card_data = cursor.fetchall()
for i in credit_card_data:
print("BANK NAME == {} | {}".format(self.name, i))
while True:
print("ADD SUM == 1")
print("SHOW SUM == 2")
print("SHOW DEBIT == 3")
print("FOR EXIT == exit")
print()
select = input("YOUR SELECT == ")
if select == "1":
add_date = input("DATE == ")
add_detail = input("DETAIL == ")
add_spend = input("SPEND == ")
print()
ccx = CreditCardRegister(add_date, add_detail, add_spend)
elif select == "2":
ccx.show()
ccx.show()
çalışmadığından bahsediyorum. Kendimce okuma yorumumdan sonra hatanın "ccx’in sınıfa atanmadığından dolayı çalıştıracağı değerleri falan belirtmediği içindir diye düşündüm. çünkü döngü yapısından oluştuğu için döngü de sadece else select == "2":
ccx atanmadığı sınıfın tanımadığı özelliğini çalıştırmayacak. anladığım bu oldu. Çözüm olarak şöyle bir yol izledim;
elif select == "2":
ccx = CreditCardRegister(add_date, add_detail, add_spend, name)
ccx.show()
fakat burada da şu sıkıntı oldu ccx’e sınıfını tanıtırken içerisine değerler göndermem gerektiği için programın en başına değerleri “None” olarak tanımladım. else select == "2":
çalıştığı zaman otomatik olarak def __init__()
de çalıştığı için veri tabanında her çalıştığı zaman boş kayıtlar oluşturmaya başlıyor. İş iyice karmaşıklaştı ve ben boğuldum.
Yapmak istediğim tam olarak şu bir sınıf belirlemek ve bu sınıfın içerisinde 2 işlem gerçekleşmesi. bu işlemin aynısını 2 farklı dosya oluşturup kod kalabalığı yaparak sağlıyorum. Ama daha sade ve az kod yazarak yapmanın mümkün olduğu aşikar. Belirlenecek sınıfın içerisinde bir “kredi kartı harcaması ekleme fonksiyonu” birde “kredi kartı harcamaları gösterme fonksiyonu” olacaktı. böylelikle değişkenler tek bir bloktan derlenecek haliyle az kod yazılmış olacak.
Not = nesne tabanlı programlamada yeniyim. iyice kavramak için sürekli tekrar ediyorum örnekler oluşturarak pekiştirmeye çalışıyorum.
Şimdiden yardımı olanlara teşekkürler <3