class Www:
def __init__(self,name):
self.name=name
def __str__(self):
return '名稱 %s'%self.name
#__repr__=__str__ *這是在__str__轉換__repr__函數的偷懶小方法函數
#__str__函數是能夠直接把對實例進行調用並獲得使用調試
'''
交互模式:字符串
方法一
>>> print(Www('實驗'))get
方法二
>>> s=Www('實驗')it
>>> print(s)
'''
class Qqq:
def __init__(self,name):
self.name=name
def __repr__(self):
return '名稱 %s'%self.name
#__repr__函數是能夠直接把對實例進行調用並獲得使用class
'''
交互模式:方法
方法一
>>> print(Qqq('實驗'))call
方法二
>>> a=Qqq('實驗')qq
>>> a
'''字符
class St:
def __init__(self):
self.mame=='小智'
def __getattr__(self,attr):#這個函數和__init__同樣不能形參多了
if attr=='yyb':
return '經過'
else:
return '失敗'
'''
__getattr__這個函數是調用不存在的屬行(如yyb),pyhon會調用__getattr__(self,'yyb')
嘗試獲取屬性,這樣就有機會返回 yyb 的值.
交換模式:
>>> s.St()
>>> s.yyb
'''
class Ooo:
def __init__(self,name):
self.name=name
def __call__(self):
return '名稱 %d'%self.name
'''
__call__,__str__,__repr__三個函數都很像,但每一個細節上是有不一樣的,然而這個__call__函數是能夠直接把對實例進行調用並獲得使用。
嗯,確實這一點__str__ __repr__ 這兩個也是同樣的但 __str__ 函數是幹關於字符串的事(__call__ 正好補漏,如若強行__str__調用字符串之外的也能夠),
__repr__ 函數至關於 __str__的一種偏調試服務型的。
交互模式:
>>> s=Ooo()
>>> s()
'''