继承方法如何使超级方法可用?

时间:2018-04-26 18:09:19

标签: python python-3.x oop mysql-python pymysql

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

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

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

0 个答案:

没有答案
相关问题