如何访问另一个python文件中的变量
我正在尝试访问main.py中firebase.py中的localId 下面是我的firebase.py中的示例代码如何访问另一个python文件中的变量,python,firebase,kivy,Python,Firebase,Kivy,我正在尝试访问main.py中firebase.py中的localId 下面是我的firebase.py中的示例代码 def sign_up(self, email, password): try: app = App.get_running_app() email = email.replace("\n","") password = password.replace("\n","")
def sign_up(self, email, password):
try:
app = App.get_running_app()
email = email.replace("\n","")
password = password.replace("\n","")
# Send email and password to Firebase
# Firebase will return localId, authToken (idToken), refreshToken
signup_url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=" + self.wak
signup_payload = {"email": email, "password": password, "returnSecureToken": True}
sign_up_request = requests.post(signup_url, data=signup_payload)
sign_up_data = json.loads(sign_up_request.content.decode())
print(sign_up_request.ok)
print(sign_up_request.content.decode())
if sign_up_request.ok == True:
refresh_token = sign_up_data['refreshToken']
localId = sign_up_data['localId']
idToken = sign_up_data['idToken']
我怎样才能访问localId变量并在另一个文件中引用它,如果有任何帮助将不胜感激我不知道是否可以访问单独文件中的局部变量。尝试从一个文件复制代码并粘贴到另一个文件中。代码是您在问题中显示的文件,“Lorem ipsum dolor…”将是另一个。(不要将“其他文件”的内容更改为“Lorem ipsum…”,这只是一个示例。) 试试这个: def注册(自我、电子邮件、密码): 尝试:
您发布的方法必须在类中,但您没有提到该类是什么,因此我将其称为
SomeClass
。然后,我们在该类中,在名为firebase.py
的文件中定义了self.localId
,它看起来像:
class SomeClass:
def __init__(self):
# initialize localId to None, just to be sure it always exists
self.localId = None
def sign_up(self, email, password):
try:
app = App.get_running_app()
email = email.replace("\n","")
password = password.replace("\n","")
# Send email and password to Firebase
# Firebase will return localId, authToken (idToken), refreshToken
signup_url = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=" + self.wak
signup_payload = {"email": email, "password": password, "returnSecureToken": True}
sign_up_request = requests.post(signup_url, data=signup_payload)
sign_up_data = json.loads(sign_up_request.content.decode())
print(sign_up_request.ok)
print(sign_up_request.content.decode())
if sign_up_request.ok == True:
refresh_token = sign_up_data['refreshToken']
# set the value of localId
self.localId = sign_up_data['localId']
idToken = sign_up_data['idToken']
然后在main.py
中,您可以访问localId
作为:
from firebase import SomeClass
someInstance = SomeClass()
someInstance.sign_up(email, password)
print('localId =', someInstance.localId)
导入firebase
然后使用firebase.localId
访问它?目前,您无法访问它。localId
变量是sign\u-up
方法的本地变量,仅在该方法执行时存在(并且仅当sign\u-up\u请求时存在。ok
为True
)。您可以将localId=
更改为self.localId=
,将其保存为该方法所在的任何类的实例变量。然后您可以将其引用为实例。localId
其中实例
是封闭类的实例。请您详细解释一下,我不明白您的意思。该值以非类型对象的形式返回,而它以字符串的形式返回,你能帮我解决这个问题吗?我不认为退货类型是你的问题。一个Nonetype
是None
,实际上什么都没有。这表明您的sign\u数据['localId']
可能是None
,或者如果sign\u request.ok==True失败,您的测试可能是。尝试在您的sign\u()
方法中添加额外的print
语句以查看发生了什么。例如,在设置localID
之前添加一个print(注册\u data)
。一切似乎都按计划进行,只是localID一直没有返回任何结果,检查了我的所有代码,但仍然没有找到解决方案,我还有什么可以尝试的吗?您是否按照我的建议尝试添加print语句?如果是,他们显示了什么?它显示了“真实”并提供了必要的信息
from firebase import SomeClass
someInstance = SomeClass()
someInstance.sign_up(email, password)
print('localId =', someInstance.localId)