Если эти каталоги не делают что-то особенное, то есть выполнять дополнительные действия в зависимости от того, находится ли файл в ProjectDirectory или MetaDirectory, я не вижу причин создавать для них пользовательские классы; Я бы предложил
import os
class BadDir(Exception): pass
class Dir(object):
def __init__(self, dirName, test=True):
self.dirName = os.path.abspath(dirName)
self.isTested = test
if test:
self.test()
def test(self):
"Make sure the directory is valid"
d = self.dirName
if not os.path.exists(d):
raise BadDir("The path '{0}' does not exist".format(d))
if not os.path.isdir(d):
raise BadDir("The path '{0}' is not a directory".format(d))
def __add__(self, s):
return Dir(os.path.join(self.dirName, s), self.isTested)
def __str__(self):
return self.dirName
PROJECT = Dir('/Users/Me')
META = PROJECT + 'Desktop'
FILE = META + 'abc.txt'
Результаты в
C:\Users\Me
C:\Users\Me\Desktop
BadDir: The path 'C:\Users\Me\Desktop\abc.txt' is not a directory