【发布时间】:2018-11-05 20:34:07
【问题描述】:
我有一个文件,其中包含我需要在主文件中使用的类定义和函数,以使文本更清晰。但是,我在导入全局变量时遇到了问题。
在 SO 和其他资源中有大量关于如何在同一代码中使函数变量成为全局变量或如何使用导入文件中的全局变量的信息。但是,如果变量属于属于某个类的函数,则没有关于如何从导入的文件中访问变量的信息。
我会很感激任何关于如何做或为什么不能做的帮助。请跳过关于使用这样的全局变量的危险的讲座,因为我的情况需要这样使用。
编辑:很抱歉在原始帖子中没有示例。这是我的第一个。以下是我正在尝试完成的示例。
假设我有一个文件 classes.py,其中包含:
class HelixTools():
def calc_angle(v1, v2):
v1_mag = np.linalg.norm(v1)
v2_mag = np.linalg.norm(v2)
global v1_v2_dot
v1_v2_dot = np.dot(v1,v2)
return v1_v2_dot
然后在我的主文本文件中执行:
from classes import HelixTools
ht = HelixTools()
v1 = some vector
v2 = some other vector
ht.calc_angle(v1,v2)
print(v1_v2_dot)
结果是“v1_v2_dot”未定义。我需要 v1_v2_dot 将其用作另一个函数的输入。
【问题讨论】:
-
您需要提供minimal reproducible example。通常,您访问变量的方式与往常一样,使用适当的命名空间。所以如果你
import mymodule,你会做类似mymodule.MyClass.some_class_var -
无论如何,尚不清楚“但是,如果变量属于属于某个类的函数,则没有关于如何从导入的文件中访问变量的信息。”这意味着。你是什么意思“变量属于一个函数”?如果它是一个局部变量,那么它在该函数之外是不可访问的。
-
我根据您的问题更新了帖子。希望现在更有意义。
-
为什么会有这个类?为什么不只使用模块级函数?为什么要有一个全局变量?
-
@user2357112 类成员模块计算分子结构的不同属性,但其中一些使用相同的输入。例如,原子位置列表可用于计算三个原子之间的角度或计算原子对向量之间的角度,这两者都是使用相同输入的独立函数。计算每个函数的原子列表是没有意义的。
标签: python class variables import