首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用self.size = size时语法无效

使用self.size = size时语法无效
EN

Stack Overflow用户
提问于 2013-02-26 11:32:39
回答 1查看 6.2K关注 0票数 1

超级,超级新的Python和一般编程。我有个问题应该很简单。我在使用PythonVersion3.1编写一本python初学者编程书。

我目前正在写这本书中的一个程序,我正在学习在使用python时缩进是多么重要,所以我修复了我发现的那些错误,然后我开始把self.size = size放在哪里,它突出了代码块中的self是无效的语法,但是我正在从手册中逐字输入这个单词,所以我不确定我做错了什么。下面是代码块:

代码语言:javascript
复制
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,我不知道为什么。我把它放进外壳,这样它就能突出自我,帮助我,但是却给我展示了完全不同的东西。

任何帮助都将不胜感激!谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-02-26 11:36:16

你忘了关闭括号了。

通常,当您忘记关闭某些括号时,所解释的错误将错误指向如下行:

代码语言:javascript
复制
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__参数(xy)正被传递给父母的__init__方法,而其他参数则被读到其他地方(image)或动态创建(dxdy)。最后,其中一个参数(size)仅传递给self.__init__主体中的实例,分配给self.size

代码语言:javascript
复制
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参数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15088047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档