前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Python零基础入门篇③⑦] - 类的高级函数

[Python零基础入门篇③⑦] - 类的高级函数

原创
作者头像
哈哥撩编程
发布2024-07-17 23:20:37
1080
发布2024-07-17 23:20:37

🍊 类的高级函数

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

🍊 __str__

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

__str__ 函数的用法:示例如下

代码语言:python
代码运行次数:0
复制
def __str__(self):
    return str(something)

# >>> 定义方式与构造函数相似,只不过换成了 str ,并且需要 self 作为参数; return 一般返回对于该类的描述信息


class Test(object):
    
    def __str__(self):
        return '这是关于这个类的描述信息'
    
    
test = Test()
print(test)

# >>> 执行结果如下:
# >>> 这是关于这个类的描述信息

🍊 __getattr__

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

__getattr__ 函数的用法:示例如下

代码语言:python
代码运行次数:0
复制
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__ 函数的用法:示例如下

代码语言:python
代码运行次数:0
复制
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__ 函数的用法:示例如下

代码语言:python
代码运行次数:0
复制
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'}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🍊 类的高级函数
    • 🍊 __str__
      • 🍊 __getattr__
        • 🍊 __setattr__
          • 🍊 __call__
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档