一、__getattr__()
1. 作用:正常情况下,当我们调用类的方法或属性时,如果不存在,就会报错。如果类定义了__getattr__(),则就不会直接报错,而是运行__getattr__()。
即:如果在调用过程中,访问了不存在的属性,会自动访问__getattr__()函数。
class Geturl(object):
def __init__(self, path=''):
self.__path = path
"""接受一个路径,可以为空"""
def __getattr__(self, item):
return Geturl("%s/%s" % (self.__path, item))
def __str__(self):
return self.__path
__repe__ = __str__
print(Geturl().zhang.xian.jaon.uel.api)
二、__call__()
作用:实例当函数用的时候,执行__call__()函数
1.例子
# encoding = utf8
class Geturl(object):
def __init__(self, path=''):
self.__path = path
"""接受一个路径,可以为空"""
def __getattr__(self, item):
return Geturl("%s/%s" % (self.__path, item))
def __str__(self):
return self.__path
def __call__(self):
print("实例当函数用")
__repe__ = __str__
s = Geturl()
s()
print(callable(s))
2.执行结果:
实例当函数用
Process finished with exit code 0
3.通过callable()
函数,我们就可以判断一个对象是否是“可调用”对象。