在下面的示例中,我需要从MySQLdatabase类调用super().__init__()
还是不需要?
如果我覆盖了MySQL数据库中的__init__
,那么我认为超类的__init__
不再被调用,这是否意味着ABC类的__init__
不再被调用?
class Database(ABC):
@abstractmethod
def open_db_connection(self):
pass
class MySQLdatabase(Database):
def __init__(self):
self.db_connection = None
self.db_cursor = None
self.record = None
self.record_dict = None
def open_db_connection(self) -> tuple[MySQLConnection, MySQLCursor]:
try:
self.db_connection = mysql.connector.connect(
host=HOST,
user=USERNAME,
password=PASSWORD,
port=PORT,
database=DATABASE_SCHEMA
)
if self.db_connection.is_connected():
self.db_cursor = self.db_connection.cursor(prepared=True, dictionary=True)
return self.db_connection, self.db_cursor
except mysql.connector.Error as e:
raise DatabaseException("error", f"while connecting to db: Database Connection Failed! error: {e}")
1条答案
按热度按时间kq4fsx7k1#
如果
Database
没有__init__
方法,那么你就不需要在它的子类中调用super().__init__
,但是包含这个调用并没有坏处,如果你以后在子类中添加了一个__init__
方法,它也会保护你。