首页 > 解决方案 > 为什么我在显示功能后没有打印出来?

问题描述

最后我的显示功能没有,有人知道我做错了什么吗?

class Person:
    def __init__(self):
        self.name = 'anonymous'
        self.birth = 'unknown'

    def displayPerson(self):
        print('{} (b. {})'.format(self.name, self.birth))

class Book(Person):
    def __init__(self):
        self.bookName = 'untitled'
        self.author = Person()
        self.published = 'unpublished'


    def displayBook(self):
        print(self.bookName)
        print('Publisher:')
        print(self.published)
        print('Author:')
        print(self.author.displayPerson())

def main():

    newBook = Book()
    newBook.displayBook()

    print('')
    print ('Please enter the following: ')
    newBook.author.name = input('Name: ')
    newBook.author.birth = input('Year: ')
    newBook.bookName = input('Title: ')
    newBook.published = input('Publisher: ')
    print('')

    newBook.displayBook()

if __name__ == '__main__':
    main()

标签: python

解决方案


displayBook方法内部,你写:

print(self.author.displayPerson())

对另一个方法的调用打印所需的输出,然后self.author.displayPerson()返回一个 None (在 Python 中,所有函数都有一个返回值。那些没有显式返回值的函数返回一个 None )。但是,然后您print在该输出上调用 a,因此您会看到额外的 None。

所以,要么使用:

def displayBook(self):
    print(self.bookName)
    print('Publisher:')
    print(self.published)
    print('Author:')
    self.author.displayPerson() #No print needed, since the method call itself has a print

或者,不要使用printin displayPerson,而是让它返回字符串。displaybook然后像往常一样在里面打印。


推荐阅读