首页 > 解决方案 > 继承方法 如何使超级方法可用?

问题描述

我有一个类(可以工作[或似乎])来运行 sql 查询。代码如下。如果我从对象继承并且不使用超级,它工作正常。

我正在学习从超类中插入方法,所以我想我会让我的类头看起来像这样

class database_connector(Connection)

并像这样在init中加入一个超级调用

super().__init__()

但是,我得到

TypeError: function() argument 1 must be code, not str

我试过了

super(database_connector, self).__init__()

在阅读了 StackOverFlow 中的其他内容后,但我现在仍然得到

TypeError: function() argument 1 must be code, not str

我期待这项工作将允许我从 pymysql.Connection 调用更多方法。

这是我的课

from pymysql import Connection

#        set up default values for database connector


class database_connector(Connection):
    def __init__(self, host=None, db=None, user=None, passwd=None):
        super(database_connector, self).__init__()
        if host is None:
            self.host = "mysql_host_ip"
        else:
            self.host = host
        if db is None:
            self.db = "fred_db"
        else:
            self.db = db
        if user is None:
            self.user = "fred"
        else:
            self.user = user
        if passwd is None:
            self.passwd = "fredspasswd"
        else:
            self.passwd = passwd

        self.this_database = (Connection(host=self.host,
                                         user=self.user,
                                         passwd=self.passwd,
                                         db=self.db))
        self.cur = self.this_database.cursor()

def my_sql_run_this_sql(self, sql_to_run=None):
    if sql_to_run is None:
        data = self.cur.execute("SELECT * FROM person")
    else:
        data = self.cur.execute(sql_to_run)
    data = []
    for row in self.cur.fetchall():
        data.append(row)
    self.this_database.close()
    return data

标签: pythonpython-3.xoopmysql-pythonpymysql

解决方案


推荐阅读