2 回答

TA贡献1863条经验 获得超2个赞
预先:这是一个糟糕的解决方案,但它只需少量更改即可满足您的要求。基本上,您需要实例__str__才能工作,因此这会欺骗使用装饰器语法将您的类声明更改为已声明类的单例实例化。由于从嵌套类中隐式引用外部类是不可能的,因此该引用是显式执行的。并且可以复用__str__,file1并且file2被做成@propertys这样他们就可以使用实例的str形式details来构建自己。
@object.__new__
class FileStructure(object): # Root directory
root = "root"
@object.__new__
class details(object): # details directory
root = "details"
@property
def file1(self):
return os.path.join(str(self), 'file1')
@property
def file2(self):
return os.path.join(str(self), 'file2')
def __str__(self):
return f"{os.path.join(FileStructure.root, self.root)}"
def __str__(self):
return f"{self.root}"
再说一遍:虽然这确实会产生您想要的行为,但这仍然是一个糟糕的解决方案。我强烈怀疑您在这里遇到了 XY 问题,但这回答了所问的问题。
添加回答
举报