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

如何正确导入数据库连接类并创建连接?解决self参数缺失错误

解决实例方法调用的TypeError问题

错误原因

establish_connection_general是实例方法,这类方法必须通过类的实例调用——Python会自动把实例作为第一个参数(self)传入方法。直接用类名调用时,没有传入这个必要的实例参数,因此触发missing 1 required positional argument: 'self'错误。

正确实现方式

方式1:实例化类后调用方法(推荐,适用于方法需要访问实例属性的场景)

  1. 导入类(假设两个文件在同一目录下)
# database_connection.py 中的导入代码
from Database_main import Database_connection
  1. 创建类实例并调用方法
# 创建Database_connection类的实例
db_instance = Database_connection()
# 调用实例方法
db_connection = db_instance.establish_connection_general()

方式2:将方法改为静态方法(适用于方法不需要访问实例/类属性的场景)

如果数据库连接逻辑不依赖类的实例属性,可给方法加上@staticmethod装饰器,直接通过类名调用:

# Database_main.py 中的修改
from PyQt5.QtWidgets import QWidget

class Database_connection(QWidget):
    # 其他代码...

    @staticmethod
    def establish_connection_general():
        # 数据库连接逻辑(此处不能使用self访问实例属性)
        pass

调用方式(无需实例化):

# database_connection.py 中的调用
from Database_main import Database_connection
db_connection = Database_connection.establish_connection_general()

方式3:将方法改为类方法(适用于方法需要访问类属性的场景)

如果需要访问类级别的属性,可用@classmethod装饰器,方法第一个参数为cls(代表类本身):

# Database_main.py 中的修改
from PyQt5.QtWidgets import QWidget

class Database_connection(QWidget):
    # 类属性示例
    db_config = {"host": "localhost", "port": 3306}

    # 其他代码...

    @classmethod
    def establish_connection_general(cls):
        # 通过cls访问类属性
        print(f"使用配置: {cls.db_config}")
        # 数据库连接逻辑
        pass

调用方式(无需实例化):

# database_connection.py 中的调用
from Database_main import Database_connection
db_connection = Database_connection.establish_connection_general()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:35:19