如何从父类继承数据成员到基类

时间:2018-02-22 06:26:45

标签: python mysql-python

我通过调用__init__方法将父类中的数据成员继承到基类,但继续收到以下错误消息

  

database_creator .__ init __(self,username,password,m_database)
  NameError:名称'username'未定义

如果我没记错的话,上面的行用于从另一个类继承成员。我使用MySQL.connector连接到数据库并使用类声明执行查询。以下是代码的一部分

class database_creator: # the class that connects to the database
    def __init__(self , username , password , m_database):
        self.username = username
        self.password = password 
        self.cursor  =None  # this is the cursor 
        self.connect = None  # this is the cnx the mysql object 
        self.tables = ['server','personal_info','credentials']   # this shows how many databse table are there
        self.m_database = m_database

class insert_database_values(database_creator):
    def __init__(self):
        database_creator.__init__(self , username , password , m_database)

1 个答案:

答案 0 :(得分:0)

简而言之,它已经出现在评论中。你是对的:

class insert_database_values(database_creator):

表示您的新班级insert_database_values继承自班级database_creator。但是,您还使用一个不带参数的新构造函数(__init__)覆盖它的构造函数(self除外),因此当您运行时:

def __init__(self):
    database_creator.__init__(self , username , password , m_database)

变量username,......在此范围内的解释器确实是未知的。

实际上,在这种情况下,除非您计划向insert_database_values构造函数添加省略的更多功能,否则无需定义自己只调用父项,只需跳过这两行并依靠继承为你工作。否则,您可以:

def __init__(self, username , password , m_database):
    database_creator.__init__(self , username , password , m_database)

根据需要添加其他实例初始化步骤。