python使用内部类作为静态类变量
背景:我一直在尝试通过将全局变量转换为静态类变量,将方法转换为类方法,将整个python文件包装到另一个文件的类中。。。python文件本身有一个类,并且有该类的全局实例化,这意味着该类现在是一个内部类,我需要该内部类类型的静态类变量。[如果您有更好的方法将整个python文件作为类包含在其他python文件中,而不使用模块(我需要将所有代码严格地放在一个文件中),请告诉我。尽管如此,我还是很想知道下面的错误] 我已经能够将我的问题归结为以下几点:python使用内部类作为静态类变量,python,python-3.x,inner-classes,Python,Python 3.x,Inner Classes,背景:我一直在尝试通过将全局变量转换为静态类变量,将方法转换为类方法,将整个python文件包装到另一个文件的类中。。。python文件本身有一个类,并且有该类的全局实例化,这意味着该类现在是一个内部类,我需要该内部类类型的静态类变量。[如果您有更好的方法将整个python文件作为类包含在其他python文件中,而不使用模块(我需要将所有代码严格地放在一个文件中),请告诉我。尽管如此,我还是很想知道下面的错误] 我已经能够将我的问题归结为以下几点: class ok: class he:
class ok:
class he:
def __init__(self):
self.x=1
she=[he() for i in range(3)]
将导致:'名称'他'未定义',但是:
class ok:
class he:
def __init__(self):
self.x=1
she=[]
for i in range(3):
she.append(he())
据我所知,两种代码都会产生相同的结果,那么为什么一种代码是合法的,而另一种代码不是合法的呢?我发现一个更简单的案例再现了你的问题: 问题在于,在列表理解的第一种情况下,它会查找一个不存在的列表理解局部变量toto(而类属性toto确实存在)。
但是,在第二种情况下,没有列表理解,因此它查找任何名为toto的变量,并找到类属性toto。
所以这个问题来自列表理解,与内部类无关