如何知道在Python中实例化对象的位置?

如何知道在Python中实例化对象的位置?,第1张

如何知道在Python中实例化对象的位置?

在不考虑为什么要这样做的优点的情况下,可以采用以下方法:

# assume the file is saved as "temp.py"import inspectclass RegisteredObject(object):    def __new__(cls, *args, **kwargs):        new_instance = super(RegisteredObject, cls).__new__(cls, *args, **kwargs)        stack_trace = inspect.stack()        created_at = '%s:%d' % ( stack_trace[1][1], stack_trace[1][2])        new_instance.created_at = created_at         return new_instance    def get_file_of_object_creation(self):        return self.created_atclass MyObject(RegisteredObject):    passdef create_A():    return MyObject()def create_B():    return MyObject()if __name__ == '__main__':    t1 = create_A()    t2 = create_B()    t3 = create_A()    t4 = create_B()    t5 = MyObject()    print '"t1" was created at "%s"' % t1.get_file_of_object_creation()    print '"t2" was created at "%s"' % t2.get_file_of_object_creation()    print '"t3" was created at "%s"' % t3.get_file_of_object_creation()    print '"t4" was created at "%s"' % t4.get_file_of_object_creation()    print '"t5" was created at "%s"' % t5.get_file_of_object_creation()

输出

$ python temp.py"t1" was created at "temp.py:19""t2" was created at "temp.py:22""t3" was created at "temp.py:19""t4" was created at "temp.py:22""t5" was created at "temp.py:29"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5666848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存