Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在类外声明的变量上出现python-NameError_Python_Python 3.x - Fatal编程技术网

在类外声明的变量上出现python-NameError

在类外声明的变量上出现python-NameError,python,python-3.x,Python,Python 3.x,Python新手,学习如何使用类。我定义了一个类,它有一个“create”方法,该方法使用一个参数(private_key)作为命令的一部分来创建令牌 命令如下: jwt.encode(payload, private_key, algorithm="RS256", headers=additional_headers).decode("utf-8") 我使用类外的函数来填充变量private_key 下面是代码(myToken.py): 类MyToke

Python新手,学习如何使用类。我定义了一个类,它有一个“create”方法,该方法使用一个参数(private_key)作为命令的一部分来创建令牌

命令如下:

jwt.encode(payload, private_key, algorithm="RS256", headers=additional_headers).decode("utf-8")
我使用类外的函数来填充变量private_key

下面是代码(myToken.py):

类MyTokenMgr():
定义初始化(自):
通过
def创建(自我、私钥、电子邮件):
#函数从文件中加载密钥
def load_privkey(privkey_文件名):
将open(privkey_文件名,'r')作为f:
data=f.read()
返回数据
#读取本地私钥
私钥=加载私钥(“测试密钥/jwt密钥”)
打印('这是本地私钥:',私钥)
这是我的问题。当我从命令行本地运行python时。我想测试对象的实例化。但是,我得到了NameError,并且变量没有定义 :

$python
win32上的Python 3.7.2(tags/v3.7.2:9A3FFC049220018年12月23日23:09:28)[MSC v.1916 64位(AMD64)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从lib.myToken导入MyTokenMgr
这是本地私钥:-开始RSA私钥-----
Miijkaibakcageatr454somht7iyu+9mM6OmtzOK/i2ajNwtybYY/fQf3vMOUt8
'''
'''
-----结束RSA私钥-----
>>>newtoken=MyTokenMgr()
>>>newtoken.create(私钥,'test@gmail.com')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
名称错误:未定义名称“私钥”
您可以看到,我打印了变量,以便查看键并确认变量使用了它。那么为什么我仍然得到未定义的错误呢? 我误解了什么概念?谢谢你的帮助

from lib.myToken import MyTokenMgr
您只导入符号
MyTokenMgr
。如果要导入其他符号,则在导入时还需要指定它们:

from lib.myToken import MyTokenMgr, private_key
您只导入符号
MyTokenMgr
。如果要导入其他符号,则在导入时还需要指定它们:

from lib.myToken import MyTokenMgr, private_key

private\u key
保留在文件的范围内,您可以通过从lib.myToken import private\u key声明
或通过在控制台中声明
private\u key=…
来导入它,您只导入
MyTokenMgr
。也许你的意思是从lib.myToken导入MyTokenMgr,private_key
谢谢你们。这样做很有效。我不知道你能导入一个变量?@noober当你导入一个类时,你就是在导入一个变量。@alaniwi-明白。非常感谢。
private\u key
保留在文件的范围内,您可以通过从lib.myToken import private\u key声明
或通过在控制台中声明
private\u key=…
来导入它,您只导入
MyTokenMgr
。也许你的意思是从lib.myToken导入MyTokenMgr,private_key
谢谢你们。这样做很有效。我不知道你能导入一个变量?@noober当你导入一个类时,你就是在导入一个变量。@alaniwi-明白。非常感谢。
from lib.myToken import MyTokenMgr, private_key