我试图创建一个带有一点验证的类,但我试图引发一个错误,相反,错误来自于属性未有效设置的事实。我做错了什么,我该如何处理。
# 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。