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'}