码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-04-03 22:12:51      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:else   pyhon   字符   交互   attr   ret   不同   int   sel   

class Www:
  def __init__(self,name):
    self.name=name
  def __str__(self):
    return ‘名称 %s‘%self.name
  #__repr__=__str__      *这是在__str__转换__repr__函数的偷懒小方法

#__str__函数是可以直接把对实例进行调用并得到使用

‘‘‘
交互模式:

方法一
>>> print(Www(‘实验‘))

方法二
>>> s=Www(‘实验‘)

>>> print(s)
‘‘‘
class Qqq:
  def __init__(self,name):
    self.name=name
  def __repr__(self):
    return ‘名称 %s‘%self.name
#__repr__函数是可以直接把对实例进行调用并得到使用

‘‘‘
交互模式:

方法一
>>> print(Qqq(‘实验‘))

方法二
>>> a=Qqq(‘实验‘)

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

‘‘‘

 

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

标签:else   pyhon   字符   交互   attr   ret   不同   int   sel   

原文地址:https://www.cnblogs.com/meiguicong/p/12628850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!