如何通过变量获取对象实例

时间:2014-06-18 07:04:55

标签: python

假设我将self.f发送到全局方法

def write_to_report(file_hdlr, content):

如果我想获得file_hdlr所属的对象。

如何获得它?因为我需要知道file_hanlder属于哪个Class, 并使用类名来做某事

def write_to_report(file_hdlr, content):
    file_hdlr.__self__ # ??? NO

CODE

class MemoryInfo(threading.Thread):        
    def __init__(self, config):
        self.f = get_export_file_hdlr(self.__class__.__name__)

class CPUInfo(threading.Thread):        
    def __init__(self, config):
        self.f = get_export_file_hdlr(self.__class__.__name__)

2 个答案:

答案 0 :(得分:1)

你不能。

另一种方法:

class ReportWriterMixin(object):
    def write_to_report(self):
        this_class = self.__class__
        # do thing with self.f based on this_class

class CPUInfo(threading.Thread, ReportWriterMixin):        
    def __init__(self, config):
        self.f = get_export_file_hdlr(self.__class__.__name__)
        self.write_to_report()

这样,虽然您的方法不再是" global",但它可以供您喜欢的任何课程使用

答案 1 :(得分:0)

如果您想知道file_hdlr变量的类型,可以使用函数type

file_hdlr_type = type(file_hdlr)