# -*- encoding: utf-8 -*-
import os
'''
第55条: 通过repr字符串来输出调试信息
关键:
1 repr
作用: 根据某个对象,返回可打印的字符串
repr(mystr) 等同于 print "%r" % (mystr)
2 eval
作用: 将字符串转换为表达式进行计算
3 类的__repr__方法
作用:返回一个包含python表达式的字符串,
也可以用于重建该对象
4 总结
repr函数提供可达因的字符串,把repr字符串传递给eval函数,
还原为初始值。
在类中编写__repr__方法来打印该类的对象。
参考:
Effectiv Python 编写高质量Python代码的59个有效方法
'''
def useRepr():
mystr = '\x07'
result = repr(mystr)
print result
print type(result)
def useEval():
mystr = '\x07'
result = eval(repr(mystr))
assert result == mystr
class MyClass(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return 'MyClass(%d, %d)' % (self.x, self.y)
def process():
useRepr()
useEval()
obj = MyClass(1, 2)
print obj
print obj.__dict__
if __name__ == "__main__":
process()