目录:

一、一些相关的BIF

二、、课时40课后习题及答案

**********************

一、一些相关的BIF

**********************

1、issubclass(class,classinfo)

如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False:

(1)一个类被认为是其自身的子类。

(2)classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True。

(3)在其它情况下,会抛出一个TypeError异常。

>>> classA:pass

>>> classB(A):pass

>>>issubclass(B,A)

True>>>issubclass(B,B)

True>>> issubclass(B,object)#object是所有类的基类

True>>> classC:pass

>>>issubclass(B,C)

False

2、isinstance(object,classinfo)

如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回True,否则,返回False:

(1)如果object是classinfo的子类的一个实例,也符合条件。

(2)如果第一个参数不是对象,则永远返回False。

(3)classinfo可以是类对象组成的元组,只要object是其中任何一个候选对象的实例,则返回True。

(4)如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError的异常。

>>>issubclass(B,C)

False>>> b1 =B()>>>isinstance(b1,B)

True>>>isinstance(b1,C)

False>>>isinstance(b1,A)

True>>> isinstance(b1,(A,B,C))

Python提供一下几个BIF用于访问对象的属性。

3、hasattr(object,name)

attr即attribute的缩写,属性的意思。接下来介绍的几个BIF都是跟对象的属性有关系的,例如这个hasattr()的作用就是测试一个对象里是否指定的属性。

第一个参数(object)是对象,第二个参数(name)是属性名(属性的字符串名字),举个例子:

>>> classC:def __init__(self,x=0):

self.x=x>>> c1 =C()>>> hasattr(c1,'x') #注意属性名要用引号括起来

True

4、getattr(object,name[,default])

返回对象指定的属性值,如果指定的属性不存在,则返回default(可选参数)的值;若没有设置default参数,则抛出ArttributeError异常。

>>> getattr(c1,'x')

0>>> getattr(c1,'y')

Traceback (most recent call last):

File"", line 1, in getattr(c1,'y')

AttributeError:'C' object has no attribute 'y'

5、setattr(object,name,value)

与getattr()对应,setattr()可以设置对象中指定属性的值,如果指定的属性不存在,则会新建属性并赋值。

>>> setattr(c1,'y','FishC')>>> getattr(c1,'y')'FishC'

6、delattr(object,name)

与setattr()相反,delattr()用于删除对象中指定的属性,如果属性不存在,则抛出ArttributeError异常。

>>> delattr(c1,'y')>>> delattr(c1,'z')

Traceback (most recent call last):

File"", line 1, in delattr(c1,'z')

AttributeError: z

7、property(fget = None,fset = None,fdel = None,doc = None)

俗话说:条条大路通罗马。同样是完成一件事,Python其实提供了好几种方式供你选择。property()是一个比较奇葩的BIF,它的作用是通过属性来设置属性。说起来有点绕,看一下例子:

classC:def __init__(self,size = 10):

self.size=sizedefgetSize(self):returnself.sizedefsetSize(self,value):

self.size=valuedefdelSize(self):delself.size

x= property(getSize,setSize,delSize)

>>> c1 =C()>>>c1.getSize()10

>>>c1.x10

>>> c1.x = 18

>>>c1.x18

>>>c1.size18

>>>c1.getSize()18

>>> delc1.x>>>c1.size

Traceback (most recent call last):

File"", line 1, in c1.size

AttributeError:'C' object has no attribute 'size'

property()返回一个可以设置属性的属性,当然如何设置属性还是需要人为来写代码。第一个参数是获取属性的方法名(例子中是getSize),第二个参数是设置属性的方法名(例子中是setSize),第三个参数是删除属性的方法名(例子中是delSize)。

property()有什么用呢?举个例子,在上面的例题中,为用户提供setSize方法名来设置size属性,并提供getSize方法名来获取属性。但是有一天你心血来潮,突然像对程序进行大改,就可能把setSize和getSize修改为setXSize和getXSize,那就不得不修改用户调用的接口,这样的体验很不好。

有了property(),所有的问题都迎刃而解了,因为像上边一样,为用户访问size属性只提供了x属性。无论内部怎么改动,只需要相应的修改property()的参数,用户仍然只需要去操作x属性即可,没有任何影响。

很神奇是吧?想知道它是如何工作的?下一章节会讲到。

**********************************

二、、课时40课后习题及答案

**********************************

python中bif是什么_python类与对象(BIF详细分析及实例讲解)相关推荐

  1. python中getattr详解_Python类中方法getitem和getattr详解

    请分享高手帮小编详解一下Python中的getattr内置函数没明白这个内置函数得意思.麻烦帮小编讲解一下. 其实这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以 ...

  2. python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)

    是小打小闹 哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发 ...

  3. python分隔符是干啥_python文件路径分隔符的详细分析

    写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如''C:\User\temp\python.txt',一直都没有报过错.也不知为啥,今天查阅资料才知 ...

  4. python中init和属性_python类的属性不在\uyu init中__

    它是类属性.实例属性和动态属性.当您这样做时:class Car(): def __init__(self): pass c = Car() c.speed = 3 c.time = 5 speed和 ...

  5. python中flush什么意思_python flush()定义及作用详解(实例分析)

    今天这篇文章我们来了解一下python之中的flush,在进入文章之前我们首先要知道我们要学的是什么东西,今天讲的是pythonflush,了解什么是flush,并且知道flash什么意思.这些东西我 ...

  6. 面向对象在python中的实践---如何定义类、对象?

    一.如何定义一个类 1.1基本语法 class Money:pass 类可以分为经典类和新式类 注意点: 类名Money中的首字母必须要大写 二.怎样通过类,创建一个对象 2.1根据类创建一个对象 # ...

  7. python中面向对象编程简称为_Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  8. python中什么最重要_Python 3中被忽视了的三大重要功能

    全文共2201字,预计学习时长6分钟 图源:unsplash Python 3上线已有一段时间,大多数开发人员(特别是那些首次编程的人)已经在使用它了.不过,你确定已经对Python 3研究透彻了吗? ...

  9. python中怎么复制代码_Python对象怎么引用_Python对象怎么复制代码_一聚教程网

    本次文章要给大家讲解的是Python对象引用及复制代码,相信这也是大家问题比较大的一个点,下面为大家具体整理了操作过程,一起来了解下. 可以说Python没有赋值,只有引用.你这样相当于创建了一个引用 ...

  10. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解

    首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...

最新文章

  1. 编程珠玑第七章 粗略估算
  2. 开源大数据周刊-第15期
  3. (15)FPGA面试题存储器资源区别
  4. python函数参数的部分求值方法
  5. html中模板引擎—前端与后端
  6. kafka集群安装配置
  7. mpythonx下载_【掌控】mpythonX:乐动盒子
  8. Avast! 4 Server 服务器版license许可文件获得方法
  9. DM数据库体系结构介绍
  10. Geotrust证书新申请及续费
  11. SSM网页聊天室游戏平台
  12. 3D MAX眼睛贴图制作过程
  13. 职场28岁现象:最好的关于职业规划的文章
  14. 445端口telnet不通经验总结
  15. 单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置
  16. 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
  17. u盘恢复数据|U盘打不开提示格式化怎么恢复数据?
  18. 从微服务架构实施看企业数字化转型
  19. 动手实现简易PHP一句话连接工具——FruitKnife
  20. 第一次创业回忆录:从博客走向微博那荡起与陨落的三年(2011-2013)

热门文章

  1. 【路径规划】基于matlab改进的粒子群算法路径规划【含Matlab源码 491期】
  2. 【图像分割】基于matlab分水岭算法图像分割【含Matlab源码 390期】
  3. 机器学习 预测模型_基于机器学习模型的汽车价格预测(第2部分)
  4. 学计算机的大学生买什么U盘,大学生最容易丢的几样东西,最后一件最让人着急,网友:真实了...
  5. java重置radiobutton的选项_动态添加试题选项按钮 radioButton(一)
  6. java request.getparameter为何能取值_request.getParameter(“xxx”)的参数的取值
  7. Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
  8. ElasticSearch 全文检索— ElasticSearch 基本操作
  9. day24-XSS过滤及单实例
  10. 内存非延续分派治理方法