我想允许用户在实例化后更改self.path,但不允许其他实例变量。但是,如果self.path被更改,则应重新评估其他实例变量。这可能吗?防止更改实例变量
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'
谢谢,帮了很多。 – giantas
但是,如何覆盖File的子类中的路径@property? (如果你不介意) – giantas
@giantas这个答案应该可以帮助你http://stackoverflow.com/a/1021484/3110529下面的答案使用'超'http://stackoverflow.com/a/1021477/3110529 – Dillanm