打印對象(__str__()和__repr__())

當打印一個類的實例時,返回的字符串是對象的地址信息,如<__main__.Student object at 0x109afb310>,很很差看
可經過在類內定義__str__(),這樣打印實例時就會返回一個好看的字符串,並且容易看出實例內部重要的數據spa

  定義__str__()調試

    class Student(object):
    
        def __init__(self, name):
            self.name = name
            
        def __str__(self):
            return 'Student object (name: %s)' % self.name
        
    print(Student('Michael'))    #輸出:Student object (name: Michael)

 

  定義__repr__()code

    s = Student('Michael')
    s    #輸出:<__main__.Student object at 0x109afb310>,打印出來的實例仍是很差看

  由於直接顯示實例變量時,它調用的不是__str__(),而是__repr__()
  __str__()和__repr__()區別
    __str__():返回用戶看到的字符串
    __repr__():返回程序開發者看到的字符串,即__repr__()是爲調試服務的

  解決辦法是再定義一個__repr__(),可是一般__str__()和__repr__()代碼都是同樣的
  因此,有個偷懶的寫法,就是直接將__str__ 賦給__repr__對象

    class Student(object):
    
        def __init__(self, name):
            self.name = name
            
        def __str__(self):
            return 'Student object (name=%s)' % self.name
            
        __repr__ = __str__    
        
    s = Student('Michael')
    s    #輸出:Student object (name: Michael)
相關文章
相關標籤/搜索