gpt4 book ai didi

python - 使用 self.size = size 时语法无效

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:11 31 4
gpt4 key购买 nike

super ,对 Python 和一般编程 super 新手。我有一个问题应该很简单。我正在使用一本使用 Python 3.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 为无效语法,但没有别的……还有最后一点,当我把这个特定的 block 放入 shell 并尝试在那里运行它时,它也会给我一个语法错误,但不是同一个,它在这个 block 的第一行的冒号之后给我一个,并用红色突出显示整个空白区域.....我不明白为什么。我把它放在 shell 中,这样它就可以突出 self 的东西并帮助我,而是向我展示一些完全不同的东西。

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

最佳答案

你忘了关闭括号。

通常,当您忘记关闭一些括号时,解释器会将错误指出在以下行中:

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 Pieters 所指出的,一些 self.__init__ 参数(xy ) 被传递给父级的 __init__ 方法,其他参数正在别处读取 (image) 或即时创建 (dxdy)。最后,其中一个参数(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 参数创作。

关于python - 使用 self.size = size 时语法无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088047/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com