动态调用实例变量

时间:2016-09-30 17:24:13

标签: python

我有一个基于当前文件扩展名的动态字符串,名为" extension"

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)()

但这会出现一个空白条目

1 个答案:

答案 0 :(得分:4)

您正确调用了实例属性。要解决您的问题,请不要将结果分配给filetype属性:

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

它无效,因为您在Nonepdf()方法中返回txt()并将其分配给filetype属性。

请注意,我将Ext的实例重新标记为ext,因为通过实例覆盖类定义可能不是一个好主意。