在不考虑为什么要这样做的优点的情况下,可以采用以下方法:
# 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"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)