Python通过对象名调用方法(对象名后面括号和参数)
实习做一个自动化测试项目的时候看到大佬代码:
d = u2.connect() #该方法返回一个UIAutomatorServer类的实例
d(discription = 'Books').click() # ???wtf,怎么对象名字后面带个括号,什么操作?
为了搞懂这个原因,我把代码里原来正确的参数description随便改成了一个错的,比如d(abc='1'),根据报错的信息一步步地查看相关的代码部分,然后结合百度找到了这个用法,其实就是python的__call__()方法:
在创建python类型时如果定义了__call__()方法,那么这个类型就是可调用的,比如在这个场景里 print(callable(d))就会输出True。
以下内容参考博客: Python类的__call__()方法
__call__():Python中,只要在创建类型的时候定义了__call__()方法,这个类型就是可调用的。
Python中的所有东西都是对象,其中包括Int/str/func/class这四类,它们都是对象,都是从一个类创建而来的。元类就是创建这些对象的东西,type就是Python的内建元类。
其中,func是可调用的对象,说明在创建它的类型(父类或它本身)的时候,定义了__call__()方法。
>>>callable(lambda:8)
True</
Python通过对象名调用方法(对象名后面括号和参数)相关推荐
- 彻底搞懂Python类属性和方法的调用
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 一.类.对象概述 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象 ...
- python类、对象、方法、属性之类与对象笔记
为什么80%的码农都做不了架构师?>>> python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... ...
- python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...
本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...
- python类和对象介绍_python中的类,对象,方法,属性等介绍
注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...
- python 类 对象 魔法方法概念+习题
类 对象 类 对象是c++和java中都有的内容,python定义类的简单语法如下: class 类名: -类变量或者方法 Python 的类定义有点像函数定义,都是以冒号:作为类体的开始,以统一缩进 ...
- python 修改模板对象的属性_django小技巧之html模板中调用对象属性或对象的方法...
环境:依赖最初test2数据库 python3版本 多python版本环境 进入,python3虚拟环境,新建项目test4: ]# cd py3/django-test1/ ]# django-ad ...
- python如何对一个属性或方法进行封装_python 类、对象、方法、属性
在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...
- Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法
一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...
- python布尔类型运算_Python对象类型及其运算方法(详解)
基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...
最新文章
- W3C XSL Transformations (XSLT) Version 2.0 翻译计划
- JDK自带线程池介绍及使用环境
- 科学家研发机器人混入南极企鹅群 获“友好”对待
- 2、编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)...
- WIN10 中mysql8 忘记密码
- Express中post请求req.body为空
- 计算机网络总结各种协议首部的长度,计算机网络协议总结
- 开关电源仿真与设计基于spice 第2版 中译本_新书推荐 开关电源控制环路设计Christophe Basso 著...
- Apache ServiceComb
- ftb测试软件,EXFO推出FTB-2光纤测试平台
- qmc0转换mp3工具_GoldenRecords for Mac(唱片录音转换软件)
- linux 基础知识学习(六)
- 关于使用rem单位,calc()进行自适应布局
- C++远征离港篇-学习笔记
- mysql数据库安装过程蜿蜒曲折
- 岁月温柔-3 清明节医院复查,去昆明过冬是否会是一种奢望?
- IPv6动态地址DNS解析
- iphone相册储存空间已满_苹果iPhone手机存储空间满了怎么办以及解决方法
- 从零开始学数据分析之——《线性代数》第四章 线性方程组
- Facebook中国程序员之死:年仅38岁就跳楼轻生
热门文章
- 猎豹空净大师:像360还是更像小米?
- 快递单号物流查询,怎样查找出多次揽收的单号
- 这四款手机将是今年“双11”最值得买的手机,已经跌成白菜价!
- 中科爱讯室外大功率双频WiFi探针TZ6003 介绍及使用方法
- 数据结构经典算法面试题
- 银企直连——前置机——交易细节查询
- 英雄联盟中如何实现快速发送上次消息
- linux uptime格式,Linux命令之uptime详解
- 笔记本显卡未连接计算机,Win10提示“您当前未使用连接到NVIDIA GPU显示器”怎么办?...
- nohup+oracle,nohup命令