复习python的__call__ __str__ __repr__ __getattr__函数 整理

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()

'''

相关文章
相关标签/搜索