亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將文件結構表示為 python 對象

如何將文件結構表示為 python 對象

江戶川亂折騰 2021-10-12 17:53:31
我試圖找到一種將文件結構表示為 python 對象的方法,這樣我就可以輕松獲得特定路徑,而無需輸入字符串。這適用于我的情況,因為我有一個靜態文件結構(不改變)。我想我可以將目錄表示為類,并將目錄中的文件表示為類/靜態變量。我希望能夠瀏覽 python 對象,以便它返回我想要的路徑,即:print(FileStructure.details.file1) # root\details\file1.txtprint(FileStructure.details) # root\details我從下面的代碼中得到的是:print("{0}".format(FileStructure())) # rootprint("{0}".format(FileStructure)) # <class '__main__.FileStructure'>print("{0}".format(FileStructure.details)) # <class '__main__.FileStructure.details'>print("{0}".format(FileStructure.details.file1)) # details\file1.txt我到目前為止的代碼是......import os class FileStructure(object): # Root directory    root = "root"    class details(object): # details directory        root = "details"        file1 = os.path.join(root, "file1.txt") # File in details directory        file2 = os.path.join(root, "file2.txt") # File in details directory        def __str__(self):            return f"{self.root}"    def __str__(self):        return f"{self.root}"我不想必須實例化類才能完成這項工作。我的問題是:如何調用類對象并讓它返回一個字符串而不是 < class ....> 文本我怎樣才能讓嵌套類使用它們的父類?
查看完整描述

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


查看完整回答
反對 回復 2021-10-12
  • 2 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號