今天来为大家介绍几个类中的高级函数,它们也是类中的内置函数。通过使用它们, 会让我们在进行类开发的时候更加的顺手,接下来我们就看看是哪些函数,让我们一个个的认识它们。
__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__
函数的用法:示例如下
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__
函数的用法:示例如下
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__
函数的用法:示例如下
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 删除。