类的专有方法(__repr__)

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#http://blog.csdn.net/yyt8yyt8/article/details/7030416
#http://zhidao.baidu.com/link?url=zdkLDmHXmSqFlGp7uBWr3HMFq2Wq8Eg6bd-Rm0pjLIGXviEBr5Li8z7avS-uXK_z_YJ1hBPIhB63PqAKH40NZX_-u-c7rJB1B4Cyd4u3PH3
#http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python


#类的专有方法(__repr__)


#__repr__
#该函数返回对象字符串表达式,repr()转化为供解释器读取的形式;返回一个可以用来表示对象的可打印字符串
    #尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象;否则生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址)
    #一个类(class)可以通过 __repr__() 成员来控制repr()函数作用在其实例上时的行为

#str()函数,得到的字符串可读性好,可以被print调用
#repr()函数,将一个对象转化为字符串显示,注意只是显示用;
#通常obj(对象)==eval(repr(obj)),接受一个对象作为其参数,返回适当的字符串


class Study():
    
    def __init__(self,name='FengMei'):
        self.name=name

    def __del__(self):
        print 'del'

    def getName(self):
        print self.name
        
    #控制repr()函数作用在其实例上时的行为
    #当需要显示一个对象在屏幕上,将这个对象的属性或方法整理成一个可以打印输出的格式
    #与eval()对应,打印出的结果赋给eval,通常可以获得原来的对象(对象类型)
    def __repr__(self):
        return "Study('xiaodeng')"


if __name__=='__main__':
    #实例化
    car=Study()
    b=repr(car)
    print b #Study('xiaodeng')
    print '**'*10
    print type(b)#<type 'str'>
    print type(eval(b))#<type 'instance'>,实例


'''
Study('xiaodeng')
********************
<type 'str'>
del
<type 'instance'>
'''

 

posted @ 2015-10-12 20:30  Xiao|Deng  阅读(1478)  评论(0编辑  收藏  举报