> 文档中心 > Python零基础入门篇 - 38 - 类的高级函数

Python零基础入门篇 - 38 - 类的高级函数


前言
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的养了一只哈士奇)
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,还请不吝👍关注、点赞、收藏三连支持👍一下博主哦
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬

🎉🎉欢迎持续关注🎉🎉

Python零基础入门篇 - 38 - 类的高级函数

文章目录

    • 类的高级函数
      • `__str__`
      • `__getattr__`
      • `__setattr__`
      • `__call__`

类的高级函数

今天来为大家介绍几个类中的高级函数,它们也是类中的内置函数。通过使用它们, 会让我们在进行类开发的时候更加的顺手,接下来我们就看看是哪些函数,让我们一个个的认识它们。

__str__

__str__ 函数的功能:默认情况下,该函数是没有任何值的。如果定义了这个函数,当我们使用 print 打印了当前实例化对象后,就会返回该函数的 return 信息。通常我们是返回一个字符串信息,作为介绍这个类的信息。

__str__ 函数的用法:示例如下

def __str__(self):    return str(something)# >>> 定义方式与构造函数相似,只不过换成了 str ,并且需要 self 作为参数; return 一般返回对于该类的描述信息class Test(object): def __str__(self): return '这是关于这个类的描述信息' test = Test()print(test)# >>> 执行结果如下:# >>> 这是关于这个类的描述信息

__getattr__

__getattr__ 函数的功能:当调用的属性或方法不存在的时候,会返回该方法或函数的定义信息

__getattr__ 函数的用法:示例如下

def __getattr__(self, key):    print(something)    # >>> key : 为调用的任意不存在的属性名# >>> 返回值可以是任意类型,也可以不返回class Test(object): def __getattr__(self, key): print('这个 key : {} 不存在'.format(key)) test = Test()test.a# 调用一个不存在的属性# >>> 执行结果如下:# >>> 这个 key : a 不存在# >>> 通过定义 __getattr__ 这样一个函数,会使得我们的返回结果更加友好,而不是直接报错。

__setattr__

__setattr__ 函数的功能:拦截当前类中不存在的属性和值,对它们可以进行一些业务处理。

__setattr__ 函数的用法:示例如下

def __setattr__(self, key, value):    self.__dict__[key] = value    # >>> key 为当前的属性名# >>> value 为当前的参数对应的值# >>> 返回值 :无class Test(object): def __setattr__(self, key, value): if key not in self.__dict__:     # print(self.__dict__)# 每一个类中都有这样一个空的字典     self.__dict__[key] = value   test = Test()test.name = 'Neo'print(test.name)# >>> 执行结果如下:# >>> Neo

__call__

__call__ 函数的功能:本质上是将一个实例化后的类变成一个函数

__call__ 函数的用法:示例如下

def __call_(self, *args, kwargs):    print('call will start')    # >>> 可传任意参数# >>> 返回值与函数情况相同,可有可无class Test(object):def __call__(self, *args, kwargs): print('__call__ func will start') # print(self.__dict__)# 每一个类中都有这样一个空的字典 print('args is {}'.format(kwargs))    test = Test()test(name = 'Neo')# >>> 执行结果如下:# >>> __call__ func will start# >>> args is {'name': 'Neo'}