gpt4 book ai didi

python使用内部类作为静态类变量奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 08:22:14 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Accessing class variables from a list comprehension in the class definition

(7 个回答)


1年前关闭。




背景:我一直在尝试通过将全局变量转换为静态类变量、将方法转换为类方法等,将整个 python 文件包装在另一个文件的类中。python 文件本身有一个类,并且有全局实例化该类的意思是,该类现在是一个内部类,我将需要该内部类类型的静态类变量。 [如果您有更好的方法将整个 python 文件作为类包含在其他 python 文件中而不使用模块(我需要将所有代码严格放在一个文件中),请告诉我。尽管如此,我很想知道下面有什么问题]
我已经能够将我的问题减少到以下几点:

class ok:
class he:
def __init__(self):
self.x=1
she=[he() for i in range(3)]
将导致:'name 'he' is not defined' 但是这有效:
class ok:
class he:
def __init__(self):
self.x=1
she=[]
for i in range(3):
she.append(he())
据我所知,这两种代码都会产生相同的结果,那么为什么一种合法而另一种不合法呢?

最佳答案

我发现了一个更简单的案例来重现您的问题:
enter image description here
问题是,在第一种情况下,列表推导它会查找列表推导的本地变量 toto ,该变量不存在(而类属性 toto 确实存在)。
然而,在第二种情况下,没有列表推导,因此它查找任何名为 toto 的变量并找到类属性 toto。
所以问题来自列表理解,与内部类无关。

关于python使用内部类作为静态类变量奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65443487/

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