Унаследованные методы Как сделать супер методы доступными? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть класс (который работает [или кажется]) для запуска 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
...