我的课程继承自FileNotFoundError
:
class ConfigFileNotFoundError(FileNotFoundError):
def __init__(self):
self.filename = super().filename
FileNotFoundError.__init__(self)
self.message = "File is absent: {}".format(self.filename)
如何从filename
获取FileNotFoundError
属性?因为如果我这样做:
if not os.path.isfile(path_to_file):
raise ConfigFileNotFoundError
self.filename
是None
。
答案 0 :(得分:1)
你对super的调用是完全错误的,因为我认为你对继承有误解。
子类 也是其超类的成员。您不要向超类询问属性;既然你继承了它,你就会获得所有相同的属性。
在Python中你做需要显式调用超类初始化方法:
def __init__(self):
super().__init__(self)
通常负责设置共享属性的值。
但是,您的代码存在更基本的问题。在引发异常时,您永远不会传递任何文件名属性,因此子类或超类都无法报告它。你可能需要这样做:
def __init__(self, filename):
super().__init__(self, filename)
和
raise ConfigFileNotFoundError(my_filename)