如何访问另一个python文件中的变量

如何访问另一个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","")

我正在尝试访问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","")

            # 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)