Python:从另一个模块访问类变量将返回'';(空字符串)来自导入的模块python
我不熟悉python OO概念,并试图理解下面的程序,我需要在代码中使用该程序来访问一个类变量,但从其他模块访问时,该变量的值返回“”(空字符串)。我知道在我的例子中使用变量有一些错误/方法,所以请您告诉我下面代码中的错误以及如何正确使用它 下面是两个包含to类的文件 AA.pyPython:从另一个模块访问类变量将返回'';(空字符串)来自导入的模块python,python,class,import,Python,Class,Import,我不熟悉python OO概念,并试图理解下面的程序,我需要在代码中使用该程序来访问一个类变量,但从其他模块访问时,该变量的值返回“”(空字符串)。我知道在我的例子中使用变量有一些错误/方法,所以请您告诉我下面代码中的错误以及如何正确使用它 下面是两个包含to类的文件 AA.py import BB class SubClass: def __init__(self): pass def operation1(self): s
import BB
class SubClass:
def __init__(self):
pass
def operation1(self):
sat2 = BB.Main_Class()
print('Main Class CAR ',sat2.car)
print('Main Class CAR ', BB.Main_Class.car)
import AA
class Main_Class:
car = ''
def __init__(self):
pass
def go(self):
Main_Class.car = 'Toyota'
print('In BB Main_Class.car', Main_Class.car)
nit = AA.SubClass()
nit.operation1()
if __name__ == '__main__':
sat1 = Main_Class()
sat1.go()
print('1 instacne',sat1.car)
print('Class instacne',Main_Class.car)
BB.py
import BB
class SubClass:
def __init__(self):
pass
def operation1(self):
sat2 = BB.Main_Class()
print('Main Class CAR ',sat2.car)
print('Main Class CAR ', BB.Main_Class.car)
import AA
class Main_Class:
car = ''
def __init__(self):
pass
def go(self):
Main_Class.car = 'Toyota'
print('In BB Main_Class.car', Main_Class.car)
nit = AA.SubClass()
nit.operation1()
if __name__ == '__main__':
sat1 = Main_Class()
sat1.go()
print('1 instacne',sat1.car)
print('Class instacne',Main_Class.car)
输出是,
('In BB MainClass.car', 'Toyota')
('Main Class CAR', '')
('Main Class CAR', '')
('1 instacne', 'Toyota')
('Class instacne', 'Toyota')
你能告诉我为什么“主级车”的打印是“”(空字符串)而不是丰田吗?另外,什么是访问值的正确方法。发生这种情况的原因是,您在
BB.py
中修改的Main_类与AA.py
导入的Main_类不同,因为您正在运行BB.py
当您运行这样的python脚本时
python BB.py
Python将把该模块作为\uuuuu主模块加载。这就是为什么if uuuuu name\uuuuuu=='\uuuuu main\uuuuuuu':
检查有效的原因。该模块的名称是\uuuu main\uuuu
,而不是BB
然后,您的\uuuu main\uuuu
(请记住,不是BB
)模块导入AA
模块,它会找到该模块,因为它位于同一目录中,python会自动将该目录添加到PYTHONPATH
。然后,AA
模块加载BB
模块,该模块将作为与从命令提示符运行的BB.py
脚本完全不同的模块第二次导入
这就是为什么不应该从命令提示中直接运行模块文件的原因
您可以通过创建CC.py
文件并运行pythoncc.py
if __name__ == '__main__':
import BB
sat1 = BB.Main_Class()
sat1.go()
print('1 instacne', sat1.car)
print('Class instacne', BB.Main_Class.car)
Python中没有Null
,而是None
,但是这里没有None
。。。你的意思是空字符串,“
”?是的,我的意思是“空字符串”。编辑了这个问题,谢谢。有些东西你没有给我们看,请注意,'CAR'
不在所有的大写字母中,因为你在操作1
中的打印声明暗示了…为了在这个论坛上发布,我刚刚编辑了打印。100%确定除了打印,其他一切都是一样的,输出仍然是“”。抱歉打错了。它起作用了,我现在不理解了。我不能因为缺乏声望而放弃投票,但我肯定会很快给你一张。谢谢你抽出时间。