实习做一个自动化测试项目的时候看到大佬代码:

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通过对象名调用方法(对象名后面括号和参数)相关推荐

  1. 彻底搞懂Python类属性和方法的调用

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 一.类.对象概述 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象 ...

  2. python类、对象、方法、属性之类与对象笔记

    为什么80%的码农都做不了架构师?>>>    python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... ...

  3. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

  4. python类和对象介绍_python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  5. python 类 对象 魔法方法概念+习题

    类 对象 类 对象是c++和java中都有的内容,python定义类的简单语法如下: class 类名: -类变量或者方法 Python 的类定义有点像函数定义,都是以冒号:作为类体的开始,以统一缩进 ...

  6. python 修改模板对象的属性_django小技巧之html模板中调用对象属性或对象的方法...

    环境:依赖最初test2数据库 python3版本 多python版本环境 进入,python3虚拟环境,新建项目test4: ]# cd py3/django-test1/ ]# django-ad ...

  7. python如何对一个属性或方法进行封装_python 类、对象、方法、属性

    在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...

  8. Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法

    一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...

  9. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

最新文章

  1. W3C XSL Transformations (XSLT) Version 2.0 翻译计划
  2. JDK自带线程池介绍及使用环境
  3. 科学家研发机器人混入南极企鹅群 获“友好”对待
  4. 2、编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)...
  5. WIN10 中mysql8 忘记密码
  6. Express中post请求req.body为空
  7. 计算机网络总结各种协议首部的长度,计算机网络协议总结
  8. 开关电源仿真与设计基于spice 第2版 中译本_新书推荐 开关电源控制环路设计Christophe Basso 著...
  9. Apache ServiceComb
  10. ftb测试软件,EXFO推出FTB-2光纤测试平台
  11. qmc0转换mp3工具_GoldenRecords for Mac(唱片录音转换软件)
  12. linux 基础知识学习(六)
  13. 关于使用rem单位,calc()进行自适应布局
  14. C++远征离港篇-学习笔记
  15. mysql数据库安装过程蜿蜒曲折
  16. 岁月温柔-3 清明节医院复查,去昆明过冬是否会是一种奢望?
  17. IPv6动态地址DNS解析
  18. iphone相册储存空间已满_苹果iPhone手机存储空间满了怎么办以及解决方法
  19. 从零开始学数据分析之——《线性代数》第四章 线性方程组
  20. Facebook中国程序员之死:年仅38岁就跳楼轻生

热门文章

  1. 猎豹空净大师:像360还是更像小米?
  2. 快递单号物流查询,怎样查找出多次揽收的单号
  3. 这四款手机将是今年“双11”最值得买的手机,已经跌成白菜价!
  4. 中科爱讯室外大功率双频WiFi探针TZ6003 介绍及使用方法
  5. 数据结构经典算法面试题
  6. 银企直连——前置机——交易细节查询
  7. 英雄联盟中如何实现快速发送上次消息
  8. linux uptime格式,Linux命令之uptime详解
  9. 笔记本显卡未连接计算机,Win10提示“您当前未使用连接到NVIDIA GPU显示器”怎么办?...
  10. nohup+oracle,nohup命令