我正在运行这段代码来创建一个表并打印它的组件。
import Proje_2
şarkı_listesi = Proje_2.Şarkı_listesi()
isim = input("İsim:")
sanatçı = input("Sanatçı:")
albüm = input("Albüm:")
prodüksiyon_şirketi = input("Prodüksiyon şirketi:")
şarkı_süresi = int(input("Şarkı süresi(sn):"))
yeni_şarkı = Proje_2.Şarkı(isim, sanatçı, albüm, prodüksiyon_şirketi, şarkı_süresi)
print("Şarkı ekleniyor")
şarkı_listesi.şarkı_ekle(yeni_şarkı,)
print("Şarkı eklendi")
şarkı_listesi.şarkıları_göster()这也是我正在使用的模块:
import sqlite3
class Şarkı():
def __init__(self,isim,sanatçı,albüm,prodüksiyon_şirketi,şarkı_süresi):
self.isim = isim
self.sanatçı = sanatçı
self.albüm = albüm
self.prodüksiyon_şirketi = prodüksiyon_şirketi
self.şarkı_süresi = şarkı_süresi
def __str__(self):
print("Şarkı ismi: {}\nSanatçı: {}\nAlbüm: {}\nProdüksiyon şirketi:{}\nŞarkı süresi(saniye): {}").format(self.isim, self.sanatçı, self.albüm, self.prodüksiyon_şirketi, self.şarkı_süresi)
class Şarkı_listesi():
def __init__(self):
self.bağlantı_oluştur()
def bağlantı_oluştur(self):
self.bağlantı = sqlite3.connect("şarkı_listesi.db")
self.cursor = self.bağlantı.cursor()
sorgu = "Create Table if not exists şarkı_listesi (isim TEXT,sanatçı TEXT,albüm TEXT,prodüksiyon_şirketi TEXT,şarkı_süresi INT)"
self.cursor.execute(sorgu)
self.bağlantı.commit()
def bağlantıyı_kes(self):
self.bağlantı.close
def şarkıları_göster(self):
sorgu = "Select * from şarkı_listesi"
şarkı_listesi = self.cursor.fetchall()
self.cursor.execute(sorgu,)
if (len(şarkı_listesi) == 0):
print("Listenizde şarkı bulunmuyor")
else:
for i in şarkı_listesi:
şarkı = Şarkı(i[0], i[1], i[2], i[3], i[4])
print(şarkı)
def şarkı_ekle(self,şarkı):
sorgu = "Insert into şarkı_listesi Values(?,?,?,?,?)"
self.cursor.execute(sorgu, (şarkı.isim,şarkı.sanatçı,şarkı.albüm,şarkı.prodüksiyon_şirketi,şarkı.şarkı_süresi))
self.bağlantı.commit()当我运行代码时,首先它会说"Listenizde‘şıblunmuyor“,如果我添加另一个"şarkı_listesi.şarkıları_göster()”函数,它会说"AttributeError:'NoneType’şıno attribute 'format'“,然后锁定数据库。为什么?
发布于 2021-09-21 19:46:11
format()是str类上的一个方法。您已经将它链接到始终为None的print的输出。将对format()的调用移到print语句中,以正确地将其链接到您的字符串:
def __str__(self):
print("Şarkı ismi: {}\nSanatçı: {}\nAlbüm: {}\nProdüksiyon şirketi:{}\nŞarkı süresi(saniye): {}".format(self.isim, self.sanatçı, self.albüm, self.prodüksiyon_şirketi, self.şarkı_süresi))发布于 2021-09-21 20:10:43
将__str__方法中的print更改为return。字符串方法将格式化输出,şarkıları_göster中print将打印输出。
旁白:它第一次显示"Listenizdeıblunmuyor“,因为ş()在execute()之前。我不确定这是不是属于“为什么?”
https://stackoverflow.com/questions/69273535
复制相似问题