• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python类的高级函数详解

python 搞代码 4年前 (2022-01-08) 28次浏览 已收录 0个评论

这篇文章主要介绍了Python类的高级函数,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

__str__函数

  • 如果定义了该函数,当print当前实例化对象的时候,会返回该函数的return信息
  • 可用于定义当前类的描述信息
  • 用法:
 def __str__(self): return str_type
  • 参数:无
  • 返回值:一般返回对于该类的描述信息

__getattr__函数

  • 当调用的属性或者方法不存在时,会返回该方法定义的信息
  • 用法:
 def __getattr__(self, key): print(something.….)
  • 参数:

key: 调用任意不存在的属性名

  • 返回值:

可以是任意类型也可以不进行返回

__setattr__函数

  • 拦截当前类中不存在的属性与值
  • 用法:
 def __settattr__(self, key,value): self._dict_[key] = value
  • 参数:

key当前的属性名

value 当前的参数对应的值

  • 返回值: 无

__call__函数

  • 本质是将一个类变成一个函数
  • 用法:
 def __call__(self,*args,**kwargs): print( 'call will start')
  • 参数: 可传任意参数
  • 返回值: 与函数情况相同可有可无

实战

 #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time     : 2021/8/15 18:22 # @Author   : InsaneLoafer # @File     : object_func.py class Test(object): def __str__(self): return 'this is a test class' def __getattr__(self, key): return '这个key:{}并不存在'.format(key) def __setattr__(self, key, value): print(key, value) self.__dict__[key] = value print(self.__dict__) def __call__(self, *args, **kwargs): pri<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码网</b>nt('call will start') print(args, kwargs) t = Test() print(t) print(t.a)  # 不存在的对象会直接打印出来,而不是报错 t.name = 'insane' t(123, name='loafer') """实现链式操作""" class Test2(object): def __init__(self, attr=''): self.__attr = attr def __call__(self, name): print('key is {}'.format(self.__attr)) return name def __getattr__(self, key): if self.__attr: key = '{}.{}'.format(self.__attr, key) else: key = key print(key) return Test2(key)  # 递归操作 t2 = Test2() print(t2.a.c('insane'))
 this is a test class 这个key:a并不存在 name insane {'name': 'insane'} call will start (123,) {'name': 'loafer'} a a.c key is a.c insane Process finished with exit code 0

以上就是Python类的高级函数详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python类的高级函数详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址