首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到"AttributeError:'NoneType‘object has no attribute 'format'“错误?

为什么我得到"AttributeError:'NoneType‘object has no attribute 'format'“错误?
EN

Stack Overflow用户
提问于 2021-09-21 17:59:49
回答 2查看 172关注 0票数 0

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

代码语言:javascript
复制
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()

这也是我正在使用的模块:

代码语言:javascript
复制
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'“,然后锁定数据库。为什么?

EN

回答 2

Stack Overflow用户

发布于 2021-09-21 19:46:11

format()str类上的一个方法。您已经将它链接到始终为Noneprint的输出。将对format()的调用移到print语句中,以正确地将其链接到您的字符串:

代码语言:javascript
复制
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))
票数 0
EN

Stack Overflow用户

发布于 2021-09-21 20:10:43

__str__方法中的print更改为return字符串方法将格式化输出,şarkıları_gösterprint将打印输出。

旁白:它第一次显示"Listenizdeıblunmuyor“,因为ş()在execute()之前。我不确定这是不是属于“为什么?”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69273535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档