一、簡介:
1、python能夠將任意變量變成str是因爲任何數據類型的實例都有一個特殊方法:__str__()
2、python的特殊方法:
(1).特殊方法定義在class中
(2).不需要直接調用
(3).python的某些函數或操作符會自動調用對應的特殊方法。
3.正確實現特殊方法:
(1).只需編寫用到的特殊方法
(2).有關聯性的特殊方法都必須實現 如:
__getattr__
__setattr__
__delattr__
這三個方法需要同時編寫。
下面列舉了部分Python定義的特殊方法:
二、python中 __str__和__repr__
如果要把一個類的實例變成 str,就需要實現特殊方法__str__():
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return '(Person: %s, %s)' % (self.name, self.gender)
現在,在交互式命令行下用 print 試試:
>>> p = Person('Bob', 'male')
>>> print p
(Person: Bob, male)
但是,如果直接敲變量 p:
>>> p
<main.Person object at 0x10c941890>
似乎__str__() 不會被調用。
因爲 Python 定義了__str__()和__repr__()兩種方法,__str__()用於顯示給用戶,而__repr__()用於顯示給開發人員。
有一個偷懶的定義__repr__的方法:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) __repr__ = __str__