gpt4 book ai didi

Python 作用域/命名空间问题

转载 作者:太空狗 更新时间:2023-10-30 02:22:59 25 4
gpt4 key购买 nike

我有两个 python 模块:

////函数.py

from classes import *

def func():
d = D()
print "func"

if __name__ == "__main__":
c = C()

////类.py

from funcs import *

class C:
def __init__(self):
print "C class"
func()

class D:
def __init__(self):
print "D class"

运行 funcs.py 会产生一个 NameError,指出“全局名称‘D’未定义”。但是,如果我注释掉 D() 实例的创建,一切正常。

为什么会这样?

谢谢

最佳答案

这个可以很好地工作而不会使您的代码复杂化:

///函数.py

import classes

def func():
d = classes.D()
print "func"

if __name__ == "__main__":
c = classes.C()

///类.py

import funcs

class C:
def __init__(self):
print "C class"
funcs.func()

class D:
def __init__(self):
print "D class"

有时使用简单的导入比 from ... import ... 要好得多。有一篇很好的文章: http://effbot.org/zone/import-confusion.htm

关于Python 作用域/命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228594/

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