gpt4 book ai didi

python - 执行类定义中的语句 : Which variables does the interpreter know about?

转载 作者:太空狗 更新时间:2023-10-29 21:53:30 25 4
gpt4 key购买 nike

下面是我的部分类定义:

class Trial:
font = pygame.font.Font(None, font_size)
target_dic = {let: font.render(let, True, WHITE, BG) for let in list("ABCDEFGHJKLMNPRSTUVWX")}

部分类定义的最后一行,target_dic = {let: font.render(let, True, WHITE, BG) for let in list("ABCDEFGHJKLMNPRSTUVWX") 返回错误:global名称“字体”未定义。很公平。

然而,我尝试了以下测试用例并没有出现错误:

class x:
dat = 1
datlist = [dat for i in range(10)]

为什么第一种情况不可行?在达到字典理解时,成员 font 是否存在?

我是否需要将这些操作移动到 __init__ 或者是否可以在创建类对象时只定义一次列表?

编辑:

为清楚起见,我希望能够在创建类对象时填充列表,以减少创建 Trial 对象所花费的时间。

最佳答案

部分回答,更多的是为了减少一些错误的路径。

如果我拿回你的工作样本并进行听写理解:

class x:
dat = 1
datlist = {i:dat for i in range(10)}

我也明白了:

>>> NameError: global name 'dat' is not defined

所以看起来字典理解隐藏了类语句执行期间临时使用的字典,但列表理解没有。

目前在文档中找不到关于此的更多信息...

根据@interjay 评论编辑:不满足范围规范的类构造在此 post 中得到解决.简而言之,列表理解在 2.x 中存在错误并且可以看到类成员,但他们不应该看到。

关于python - 执行类定义中的语句 : Which variables does the interpreter know about?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10787727/

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