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 問題,但這回答了所問的問題。
添加回答
舉報