Python 类型对象DbTableExternal没有属性db\u path
我有一个抽象类Python 类型对象DbTableExternal没有属性db\u path,python,Python,我有一个抽象类 class DbTableCore(object): __metaclass__ = ABCMeta @abstractmethod def create_table(self): pass @abstractmethod def drop_table(self): pass @abstractmethod def insert_items(self, items): p
class DbTableCore(object):
__metaclass__ = ABCMeta
@abstractmethod
def create_table(self):
pass
@abstractmethod
def drop_table(self):
pass
@abstractmethod
def insert_items(self, items):
pass
@abstractmethod
def select_items(self):
pass
@abstractmethod
def update_items(items):
pass
我想把一些属性传递给所有的子类,但我听说使用抽象类。我无法做到这一点-属性没有继承
所以我决定创建一个中间类,它不实现抽象类的方法——我只是传递它们
class DbTableExternal(DbTableCore):
def __init__(self):
with open('app_config.ini') as file:
cfg = process_ini(tuple(file))
self.db_path = cfg.get('db_path')
def create_table(self):
pass
def drop_table(self):
pass
def insert_items(self, items):
pass
def select_items(self):
pass
def update_items(items):
pass
最后,我的子类继承了这个中间类
class ItemTable(DbTableExternal):
def __init__(self):
DbTableExternal.__init__(self)
self.db_path = DbTableExternal.db_path
但是当我试着运行它时,我犯了一个错误
File "bla-bla", line 63, in __init__
self.db_path = DbTableExternal.db_path # line 63
AttributeError: type object 'DbTableExternal' has no attribute 'db_path'
有什么问题吗
self.db_path = DbTableExternal.db_path
您不需要上面的行,因为self.db\u path
将由super class'\uuuu init\uu
方法设置。(DbTableExternal.\uuuu init\uuuuuu(self)
)
您可以作为self.db_path
(作为实例属性)访问属性,而不是作为DbTableExternal.db_path
(作为类属性)访问属性