I would like to allow the user to change self.path after instantiation but not any other instance variable. However, if self.path is changed then the other instance variables should be reevaluated. Is this possible?
class File(object):
def __init__(self, path):
self.path = os.path.abspath(path)
self.name = os.path.basename(self.path)
self.parent = os.path.dirname(self.path)
self.extension = self._get_extension()
self.category = self.get_category(self.extension)
self.exists = os.path.isfile(self.path)
def _get_extension(self):
extension = None
result = os.path.splitext(self.name)[1][1:]
if result:
extension = result
return extension
def get_category(self, extension):
if extension:
file_extension = extension.upper()
for key in fileGroups.keys():
common = set(fileGroups[key]) & set([file_extension])
if common:
return key
return 'UNDEFINED'