python变量名解析机制?

标签 python variables

python 如何解析变量名?在下面的示例中。 为什么 ChildA 中的 print(Base) 不引用 Base 类? ChildA(Base) 中的 Base 是指 Bass 类还是字符串类或“String”?

class Base(object):
    def __init__(self):
        print( "Base created")

class ChildA(Base):
    def __init__(self):
        print(Base)
        Base.__init__(self)


Base = 'string'
ChildA()

最佳答案

查找在代码执行时动态发生。当 Python 到达 print(Base) 行时,它会查找名为 Base 的局部变量,然后在封闭范围内查找名称 Base。在这种情况下,它会在全局命名空间中找到一个,并且在您调用 ChildA() 时,该变量是一个字符串。

换句话说,函数中的自由(即非局部)变量确实是自由的:它们所引用的在定义函数时并未“锁定”,而是在每次函数时重新查找被称为。

请注意,class ChildA(Base) 中的 Base 确实明确引用了示例中的 Base 类。那是因为类定义只执行一次,此时,名称 Base 指向该类。

关于python变量名解析机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013621/

相关文章:

powershell - 能否将一个变量拆分为多个变量?

java - 无法解决 "local variable needs to be final"

php - 如何将 PHP 谷歌应用程序引擎应用程序中的任务添加到拉取队列?

python - Django:由模板组成的模板

Python文件关键字参数?

python - 如何在seaborn中绘制带有一天x标签的时间序列?

python - exec() 方法的变量在哪里定义?

mysql - SELECT INTO MySQL 声明中的多个变量

python循环字典值引用更新所有值

python - selenium - 无法将 browsec 扩展添加到 firefox 配置文件