2016-09-30 49 views
2

我已經根據當前文件的擴展動態字符串名爲「擴展」實例變量的動態調用

fileextension = os.path.splitext(file.filename)[1] 
extension = fileextension.replace(".","") 

可以說,延長=「PDF」

我怎麼能叫Ext.pdf()實例變量在下面?

class Ext: 
    def pdf(self): 
     self.filetype = "pdf - Adobe Portable Document Format" 
    def txt(self): 
     self.filetype = "txt - ASCII text file" 
Ext = Ext() 

我曾嘗試:

Ext.filetype = getattr(Ext, extension)() 

但這來了一個空白項

+3

我會避免將您的變量命名爲與您的類完全相同('Ext')。 – pferate

+2

請勿重複使用類名稱作爲實例變量名稱。 – chepner

回答

4

你叫實例屬性正確。爲了解決您的問題沒有結果分配給filetype屬性:

ext = Ext() 
getattr(ext, extension)() 
print(ext.filetype) 

它沒有工作,因爲你內pdf()txt()方法返回None和分配,爲filetype屬性。

請注意,我將Ext的實例重新標記爲ext,因爲通過實例覆蓋類定義可能不是一個好主意。