这篇教程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.pyclass 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): print('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'}aa.ckey is a.cinsaneProcess finished with exit code 0 到此这篇关于Python类的高级函数的文章就介绍到这了,更多相关Python高级函数内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! python列表与列表算法详解(2) 利用Python+Selenium破解春秋航空网滑块验证码的实战过程 |