57

新しいメモを作成するこのコードがあります..印刷しようとすると、出力を印刷しても次のエラーが表示されます

Error:
C:\Python27\Basics\OOP\formytesting>python notebook.py
Memo=This is my first memo, Tag=example
Traceback (most recent call last):
  File "notebook.py", line 14, in <module>
    print(firstnote)
TypeError: __str__ returned non-string (type NoneType)

note.py

import datetime
class Note:
    def __init__(self, memo, tags):
        self.memo = memo
        self.tags = tags
        self.creation_date = datetime.date.today()

    def __str__(self):
        print('Memo={0}, Tag={1}').format(self.memo, self.tags)


if __name__ == "__main__":
    firstnote = Note('This is my first memo','example')
    print(firstnote)
4

8 に答える 8

91

メソッド__str__は、出力ではなく文字列を返す必要があります。

def __str__(self):
    return 'Memo={0}, Tag={1}'.format(self.memo, self.tags)
于 2012-08-08T18:54:04.057 に答える
0

テーブルに null 値が含まれている可能性があります。mysqlに入力し、テーブルのnull値を削除します。

于 2021-07-20T14:15:14.090 に答える
0

モデルの__str__メソッドでは、値を返していますnull

例えば:

class X(models.Model):
    name = models.CharField(_('Name'), null=True, blank=True, 
    max_length=150)
    date_of_birth = models.DateField(_('Date of birth'), null=True, blank=True)
    street = models.CharField(_('Street'), max_length=150, blank=True)
    
    def __str__(self):
        return self.name # here the value of name field might be null, so the 

エラーが表示されています。

正しい__str__方法は次のとおりです。

def __str__(self):
    return str(self.name)
于 2022-01-08T11:34:02.690 に答える
0

私の場合、同じ問題がありました。数字が返されたためです。

def __str__(self):
    return self.code

str は別の str ではなく、str を待っています。

今ではうまくいきます:

def __str__(self):
    return self.name

name は STRING です。

于 2021-01-17T01:34:57.610 に答える