python-内置函数-长期维护

##################     内置函数:callable        #######################

# allable() 函数用于检查一个对象是否是可调用的。
# 如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
# 对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。
# 语法
# callable(object)

callable(0)  # false

##############
def add(a, b):
    return a + b
callable(add)  # true

##################
class A:                
    def method(self):
        return 0
callable(A)  # true

################
a = A()
callable(a)  # 没有实现 __call__, 返回 False


##############
class B:
    def __call__(self):
        return 0
callable(B)  # true

b = B()
callable(b)  # 实现 __call__, 返回 True        
################

##################     内置函数:getattr     #######################

# 什么是反射
# 反射是一个很重要的概念,它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法:

# getattr 获取指定字符串名称的对象属性
# setattr 为对象设置一个对象
# hasattr 判断对象是否有对应的对象(字符串)
# delattr 删除指定属性

# attr是属性英文的前几个字母,属性指的是类中类变量、实例变量和方法。但是要注意不能是私有的,如果你的变量是以“_”开头,那将无法获取。
# 反射常常用在动态加载模块的场景中。也就是如果没有一个



# getattr() 函数用于返回一个对象属性值。
# 语法:
# getattr(object, name[, default])
# object -- 对象。
# name -- 字符串,对象属性。
# default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。


class Person(object):
    def __init__(self, name):
        self.name = name

s = "name"

andy = Person("andy")
print(getattr(andy, s))  # 通过字符串获取到了属性

##################     内置函数:callable        #######################

##################     内置函数:callable        #######################

##################     内置函数:callable        #######################

相关推荐