Python类属性__call__是什么?Python类属性__call__能做什么

在python类之中被定义好的变量被称之为属性,而除了自定义的属性之外,python类还有很多已经是定义好了的属性 。那今天这篇文章就来介绍一个可以实现类对象能否调用判断的属性__call__,感兴趣的小伙伴就一起往下看看吧 。

Python类属性__call__是什么?Python类属性__call__能做什么

文章插图
(1)这个属性之所以会在所有两边加上下划线来命名就是因为它是一个只能在python类中去调用的私有属性,因为没有一个类属性或者方法都是能够去引用它的,所以它才能够作为类对象是否能调用的依据 。
(2)那么想要使用__call__属性的话,还需要用到一个叫做hasattr的方法,这个方法的作用就是去判断类对象是否有这个属性 。如果有的话就表示它是存在并且能够被调用的属性或者方法,示例如下所示:
class User:    def __init__(self, name, passwd):        self.name = name        self.passwd = passwd    def validLogin (self):        print(' %s登录' % self.name)u = User('crazyit', 'leegang')print(hasattr(u.name, '__call__'))print(hasattr(u.validLogin, '__call__'))FalseTrue在上面的代码示例之中就是声明了一个类并且定义了构造函数和一个方法,然后在全局命名空间之中传递值进去实例化出来了这个类对象 。再用hasattr()方法去判断类中的name属性以及validLogin()方法是否可以调用,得到的结果却是False和True 。
这是因为name这个属性是被定义在类构造函数之中的,它只能作为私有变量在类之中使用,而无法通过类对象去调用 。而方法则是暴露在外部的,可以直接被类对象引用 。
【Python类属性__call__是什么?Python类属性__call__能做什么】以上就是关于“Python类属性__call__是什么?Python类属性__call__能做什么”的全部内容了,希望对你有所帮助 。

    推荐阅读