我到处都搜索过,找不到原因?我正在尝试运行此代码(它来自Python第6课的Udacity Initiate Programming):
import media
toy_story = media.Movie("Toy Story",
"A story of a boy and his toys that come back to life",
"https://upload.wikimedia.org/wikipedia/en/thumb/1/13/Toy_Story.jpg/220px-Toy_Story.jpg",
"https://youtu.be/KYz2wyBy3kc",
"4 Stars")
avatar = media.Movie("Avatar",
"A Marine on an Alien Planet",
"https://upload.wikimedia.org/wikipedia/en/thumb/b/b0/Avatar-Teaser-Poster.jpg/220px-Avatar-Teaser-Poster.jpg",
"https://youtu.be/5PSNL1qE6VY",
"5 Stars")
# print(toy_story.storyline)
avatar.show_trailer()
使用以下代码在同一文件夹上的media.py文件上成功使用了Class Movie,它正好创建了Movie对象:
import webbrowser
class Movie():
def __init__(self, movie_title, movie_storyline, movie_poster, movie_trailer, movie_rating):
self.title = movie_title
self.storyline = movie_storyline
self.poster = movie_poster
self.trailer = movie_trailer
self.rating = movie_rating
def show_trailer(self):
webbrowser.open(self.trailer)
但是,每当我尝试运行第一个代码时,我都会收到错误消息:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-44-50b40b5dbf08> in <module>()
14
15 # print(toy_story.storyline)
---> 16 avatar.show_trailer()
AttributeError: 'Movie' object has no attribute 'show_trailer'
我已经尝试了很多东西,已经阅读了关于缩进但是没关系,甚至从头开始写下来完美地缩进代码,在方法@classmethod
上添加了show_trailer()
它作为一个带有return
语句的函数,甚至通过python -tt media.py
运行它也无效。
我知道这门课程是为Python 2设计的,但是认为理解它会是一个额外的挑战,然后去弄清楚如何在Python 3上做到这一点,直到现在我已成功=(。
帮助!
答案 0 :(得分:0)
从一开始我就使用Atom和Hydrogen Plugin运行.py这就是问题所在,代码在Python的IDLE上完美运行。
我会研究为什么,但我的猜测是Atom + Hydrogen可能不是代码的最佳组合。
问题解决了,Code确实有效。