gpt4 book ai didi

python变量名解析机制?

转载 作者:太空狗 更新时间:2023-10-30 02:11:41 24 4
gpt4 key购买 nike

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/

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