我试图创建一个带有一点验证的类,但我试图引发一个错误,相反,错误来自于属性未有效设置的事实。我做错了什么,我该如何处理。
# A class to represent a dataset upload replacement operation import os class DataReplacement: def __init__(self, portal, inputfolder, input, output, audience): self.portal = portal self.inputfolder = inputfolder self.input = input self.output = output self.audience = audience self.fullpath = os.path.join(inputfolder, input) @property def fullpath(self): return self._fullpath @fullpath.setter def fullpath(self, value): try: isinstance(self.inputfolder, str) and isinstance(self.input, str) except ValueError: raise ValueError("inputfolder and input must be a string") from None fp = os.path.join(self.inputfolder, self.input) if os.path.exists(fp): self._fullpath = os.path.join(self.inputfolder, self.input) else: raise IOError(f"file {self.fullpath} does not exist.") from None
例如,如果我将一个实例设置为一个实际存在的文件,我不会得到错误,但在第二个示例中,如果该文件不存在,我会得到一个错误,但这不是我想要得到的错误(如果这有意义?)。
dr = DataReplacement('www.mywebsite.com', r'/Volumes/Project01/homedev/data', 'test_csv.csv', 'wa4r-1992', 'private')
上述方法有效,但“ashdfiwuehv.csv”不存在
dr2 = DataReplacement('www.mywebsite.com', r'/Volumes/Project01/homedev/data', 'ashdfiwuehv.csv', 'wa4r-1992', 'private')
我明白。。。AttributeError:“DataReplacement”对象没有属性“_fullpath”,而不是我试图引发的IOError。