我通过调用__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)
答案 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)
根据需要添加其他实例初始化步骤。