在python类之中被定义好的变量被称之为属性,而除了自定义的属性之外,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__能做什么”的全部内容了,希望对你有所帮助 。
推荐阅读
- python编码中为什么要写类型注解?如何在python中写类型注解?
- 如何使python变为可执行文件?python变为可执行文件的方法
- Python怎么隐藏模块内对象?Python模块内对象导入如何不被调用
- python中的raw_input函数有什么作用?如何使用python中raw_input()函数?
- Python中__init__.py文件有什么用?深入理解Python包
- python中的引号都有哪些作用?python中引号的区别是什么?
- Python要怎么创建包?Python包创建的方法是什么
- python怎样判断变量的类型?python判断变量为整数的方法
- Python中super函数有什么用?Python怎么使用super()函数
- 花艺作品中适合花艺创造的果类花材