2 回答

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
預(yù)先:這是一個(gè)糟糕的解決方案,但它只需少量更改即可滿足您的要求。基本上,您需要實(shí)例__str__才能工作,因此這會(huì)欺騙使用裝飾器語法將您的類聲明更改為已聲明類的單例實(shí)例化。由于從嵌套類中隱式引用外部類是不可能的,因此該引用是顯式執(zhí)行的。并且可以復(fù)用__str__,file1并且file2被做成@propertys這樣他們就可以使用實(shí)例的str形式details來構(gòu)建自己。
@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}"
再說一遍:雖然這確實(shí)會(huì)產(chǎn)生您想要的行為,但這仍然是一個(gè)糟糕的解決方案。我強(qiáng)烈懷疑您在這里遇到了 XY 問題,但這回答了所問的問題。
添加回答
舉報(bào)