超级,超级新的Python和一般编程。我有个问题应该很简单。我在使用PythonVersion3.1编写一本python初学者编程书。
我目前正在写这本书中的一个程序,我正在学习在使用python时缩进是多么重要,所以我修复了我发现的那些错误,然后我开始把self.size = size放在哪里,它突出了代码块中的self是无效的语法,但是我正在从手册中逐字输入这个单词,所以我不确定我做错了什么。下面是代码块:
def _init_(self, x, y, size):
""" Initialize asteroid sprite. """
super(Asteroid, self)._init_(
image = Asteroid.images[size],
x = x, y = y,
dx = random.choice([1, -1]) * Asteroid.SPEED * random.random()/size,
dy = random.choice([1, -1]) * Asteroid.SPEED * random.random()/size
self.size = size 问题是最后一行,它将self强调为无效语法,但没有其他.还有最后一个注意事项,当我将这个特定的块放入shell并尝试在那里运行它时,它还会给我一个语法错误,但不是相同的错误,它会给我一个在这个块的第一行冒号后面的一个,并高亮显示整个空白区域的red.....and,我不知道为什么。我把它放进外壳,这样它就能突出自我,帮助我,但是却给我展示了完全不同的东西。
任何帮助都将不胜感激!谢谢!
发布于 2013-02-26 11:36:16
你忘了关闭括号了。
通常,当您忘记关闭某些括号时,所解释的错误将错误指向如下行:
def _init_(self, x, y, size):
""" Initialize asteroid sprite. """
super(Asteroid, self)._init_( <-- here you have a parentheses opening
image = Asteroid.images[size],
x = x, y = y,
dx = random.choice([1, -1]) * Asteroid.SPEED * random.random()/size,
dy = random.choice([1, -1]) * Asteroid.SPEED * random.random()/size <-- no more commas here
self.size = size <-- first line without a trailing comma OR parentheses: SYNTAX ERROR HERE! (even though the assignment itself is ok)也许这本书实际上的意思是--正如Martijn所指出的,一些self.__init__参数(x和y)正被传递给父母的__init__方法,而其他参数则被读到其他地方(image)或动态创建(dx和dy)。最后,其中一个参数(size)仅传递给self.__init__主体中的实例,分配给self.size。
def __init__(self, x, y, size):
""" Initialize asteroid sprite. """
super(Asteroid, self)._init_(
image = Asteroid.images[size],
x = x,
y = y,
dx = (random.choice([1, -1]) * Asteroid.SPEED * random.random()/size),
dy = (random.choice([1, -1]) * Asteroid.SPEED * random.random()/size))
self.size = size重要的是要知道,Python中的任何方法(在类中定义的例程)都会自动接收第一个参数,即对象实例本身。尽管您可能会按您的需要将其命名为self,但它是通用的Python约定。因此,当您定义__init__并将self作为第一个参数传递时,您可以在整个函数中使用它来引用正在创建的对象。因此,说self.x = x意味着您希望对象具有一个x属性,它的值是您在对象创建时传递的x参数。
https://stackoverflow.com/questions/15088047
复制相似问题