Python类入门:如何实现批量打印电影实例信息的通用函数?
解决方案
首先修正你代码里的关键bug:get_rating方法错误返回了self.name,应该改为self.rating,否则打印出的评分会是电影名称,这不符合预期。
针对你的需求,有两种简洁的方式实现批量打印电影信息,避免重复编写print语句:
方式1:独立批量打印函数
将所有电影实例存入列表,定义一个遍历列表并打印每个实例信息的函数:
def print_film_info(films): for film in films: print(film.get_name(), film.get_genre(), film.get_rating())
调用时只需传入实例列表:
print_film_info([f1, f2, f3])
方式2:为Film类添加打印方法
在类内部定义一个负责打印当前实例信息的方法,之后遍历实例调用该方法即可:
class Film(): def __init__(self, name, genre, rating): self.name = name self.genre = genre self.rating = rating #0-100 def get_name(self): return ("The Name of the film is: " + str(self.name)) def get_genre(self): return ("The Genre of the film is: " + str(self.genre)) def get_rating(self): return ("The rating of the film is: " + str(self.rating)) # 已修正bug def print_info(self): print(self.get_name(), self.get_genre(), self.get_rating())
调用示例:
for film in [f1, f2, f3]: film.print_info()
你之前遇到的“函数未定义”错误,通常是因为函数定义位置错误——比如将函数缩进在类内部却未作为方法使用,或者在函数定义前就调用了它。只要保证函数定义在调用语句之前,且缩进层级正确(独立函数与类同级,类内方法缩进在类内部),就能解决这个问题。
完整可运行代码
class Film(): def __init__(self, name, genre, rating): self.name = name self.genre = genre self.rating = rating #0-100 def get_name(self): return ("The Name of the film is: " + str(self.name)) def get_genre(self): return ("The Genre of the film is: " + str(self.genre)) def get_rating(self): return ("The rating of the film is: " + str(self.rating)) def print_film_info(films): for film in films: print(film.get_name(), film.get_genre(), film.get_rating()) f1 = Film("Fight Club", "Thriller", 91) f2= Film("Whiplash","Thriller",86) f3 = Film("Inside out","Animation",71) print_film_info([f1, f2, f3])
内容的提问来源于stack exchange,提问作者DannyMoham1
相关产品推荐
相关产品推荐

