首页 > 解决方案 > 为什么我无法访问继承类的属性?

问题描述

给定以下类:

class DataAccessLayer():

    def __init__(self):
        self.engine = create_engine(CONN_STRING, pool_size=95, max_overflow=0)
        self.connection = self.engine.connect()


class DataAccessLayerParallel(DataAccessLayer):

    def __init__(self):
        session_factory = sessionmaker(bind=self.connection)

我尝试创建DataAccessLayerParallel如下实例:

dal = DataAccessLayerParallel()

但是,我收到错误:

Exception has occurred: AttributeError
'DataAccessLayerNonParallel' object has no attribute 'connection'

我认为这是因为__init__方法 fromDataAccessLayer在继承时没有运行?我将如何确保我可以访问该connection属性?

标签: python

解决方案


您需要使用 调用父构造函数super。像这样:

class DataAccessLayer():

    def __init__(self):
        self.engine = create_engine(CONN_STRING, pool_size=95, max_overflow=0)
        self.connection = self.engine.connect()


class DataAccessLayerParallel(DataAccessLayer):

    def __init__(self):
        super(DataAccessLayerParallel, self).__init__()
        self.session_factory = sessionmaker(bind=self.connection)

推荐阅读