You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中不使用全局变量如何在__init__内调用用户输入函数的变量

修正后实现方案(完全无全局变量)

你可以通过以下两种常用方式实现需求,同时规避全局变量、修正原代码的语法问题:

方案1:邮箱输入逻辑内置在初始化流程中

适合需要在实例初始化时自动触发邮箱输入的场景,代码最简洁:

from typing import Text

# 注意Python类声明用小写class,原代码的Class是错误写法
class GetDatabase():
    # 单独封装邮箱输入的内部方法,可复用
    def _user_email_input(self) -> Text:
        return input("what is your email")

    # __init__默认返回None,原代码标注返回Text不符合规范
    def __init__(self, uri: Text = "localhost:2555", servername: Text = "schools"):
        self.uri = uri
        self.servername = servername
        # 直接调用内部方法获取输入,赋值给实例属性
        self.me = self._user_email_input()

方案2:输入时机自主控制,将邮箱作为初始化参数传入

适合需要提前获取邮箱、或者输入逻辑和类实例化解耦的场景:

from typing import Text

class GetDatabase():
    # 新增user_id作为初始化入参
    def __init__(self, user_id: Text, uri: Text = "localhost:2555", servername: Text = "schools"):
        self.uri = uri
        self.servername = servername
        self.me = user_id

# 实例化前先获取用户输入,再把值传入初始化方法
if __name__ == "__main__":
    input_email = input("what is your email")
    db_instance = GetDatabase(user_id=input_email)

原代码的问题说明

  • 类声明关键字Class拼写错误,Python要求小写class
  • 类的普通实例方法第一个参数必须是self,原代码的user_email_input方法未加该参数,运行会报错
  • __init__是类的初始化方法,默认返回空值None,标注返回值为Text不符合语法规范

内容的提问来源于stack exchange,提问作者Overture04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:27:06