python - 为什么我在显示功能后没有打印出来?
问题描述
最后我的显示功能没有,有人知道我做错了什么吗?
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()
解决方案
在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
或者,不要使用print
in displayPerson
,而是让它返回字符串。displaybook
然后像往常一样在里面打印。
推荐阅读
- python - 如何解决 numpy.arange 无法正常工作的问题?
- mysql - MySQL - 递归列出表中所有项目的所有父母和祖先
- stata - 计算具有重复 ID 的观察值
- logging - 静态块未显示在 CMS 页面中,我正在使用 Magento2
- python - Twitter 搜索 API 多个哈希标签
- python - 组合/合并熊猫中的值
- android - Handle touch outside textview after selectable text menu appears in android
- angular - Ionic5 angular9 vendor-es2015.js ERROR [object Object]
- django - Inherit from abstract class Django
- android - 改造界面如何添加cookie来存储数据