为什么会出现“AttributeError:'NoneType'对象没有属性'format'”错误?

2024-05-23 18:14:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行这段代码来创建一个表并打印它的组件

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()

当我运行代码时,首先它会显示“listenizedeşarkıblunmuyor”,如果我添加另一个“arkıu listesi.arkılarıgöster()”函数,它会显示“AttributeError:‘NoneType’object没有属性‘format’”,然后锁定数据库。为什么?


Tags: selfdefprodcursorarkalbbasanat
2条回答

__str__方法中的print更改为returnstr方法将格式化输出,并且şarkıları_göster中的print将打印输出

旁白:它说“listenizedeşarkıblunmuyor”`这是第一次,因为fetchall()在execute()之前。我不确定这是否是“为什么”的一部分

^{}str类上的一个方法。您已经将它链接到了print的输出,即始终None。将对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))

相关问题 更多 >