python中bif是什么_python类与对象(BIF详细分析及实例讲解)
目录:
一、一些相关的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详细分析及实例讲解)相关推荐
- python中getattr详解_Python类中方法getitem和getattr详解
请分享高手帮小编详解一下Python中的getattr内置函数没明白这个内置函数得意思.麻烦帮小编讲解一下. 其实这个方法最主要的作用是实现反射机制.也就是说可以通过字符串获取方法实例.这样,你就可以 ...
- python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)
是小打小闹 哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发 ...
- python分隔符是干啥_python文件路径分隔符的详细分析
写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如''C:\User\temp\python.txt',一直都没有报过错.也不知为啥,今天查阅资料才知 ...
- python中init和属性_python类的属性不在\uyu init中__
它是类属性.实例属性和动态属性.当您这样做时:class Car(): def __init__(self): pass c = Car() c.speed = 3 c.time = 5 speed和 ...
- python中flush什么意思_python flush()定义及作用详解(实例分析)
今天这篇文章我们来了解一下python之中的flush,在进入文章之前我们首先要知道我们要学的是什么东西,今天讲的是pythonflush,了解什么是flush,并且知道flash什么意思.这些东西我 ...
- 面向对象在python中的实践---如何定义类、对象?
一.如何定义一个类 1.1基本语法 class Money:pass 类可以分为经典类和新式类 注意点: 类名Money中的首字母必须要大写 二.怎样通过类,创建一个对象 2.1根据类创建一个对象 # ...
- python中面向对象编程简称为_Python基础-面向对象编程
本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python中什么最重要_Python 3中被忽视了的三大重要功能
全文共2201字,预计学习时长6分钟 图源:unsplash Python 3上线已有一段时间,大多数开发人员(特别是那些首次编程的人)已经在使用它了.不过,你确定已经对Python 3研究透彻了吗? ...
- python中怎么复制代码_Python对象怎么引用_Python对象怎么复制代码_一聚教程网
本次文章要给大家讲解的是Python对象引用及复制代码,相信这也是大家问题比较大的一个点,下面为大家具体整理了操作过程,一起来了解下. 可以说Python没有赋值,只有引用.你这样相当于创建了一个引用 ...
- python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...
最新文章
- 编程珠玑第七章 粗略估算
- 开源大数据周刊-第15期
- (15)FPGA面试题存储器资源区别
- python函数参数的部分求值方法
- html中模板引擎—前端与后端
- kafka集群安装配置
- mpythonx下载_【掌控】mpythonX:乐动盒子
- Avast! 4 Server 服务器版license许可文件获得方法
- DM数据库体系结构介绍
- Geotrust证书新申请及续费
- SSM网页聊天室游戏平台
- 3D MAX眼睛贴图制作过程
- 职场28岁现象:最好的关于职业规划的文章
- 445端口telnet不通经验总结
- 单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置
- 程序人生(一)从“道·法·术·器“”的角度来谈谈程序的境界
- u盘恢复数据|U盘打不开提示格式化怎么恢复数据?
- 从微服务架构实施看企业数字化转型
- 动手实现简易PHP一句话连接工具——FruitKnife
- 第一次创业回忆录:从博客走向微博那荡起与陨落的三年(2011-2013)
热门文章
- 【路径规划】基于matlab改进的粒子群算法路径规划【含Matlab源码 491期】
- 【图像分割】基于matlab分水岭算法图像分割【含Matlab源码 390期】
- 机器学习 预测模型_基于机器学习模型的汽车价格预测(第2部分)
- 学计算机的大学生买什么U盘,大学生最容易丢的几样东西,最后一件最让人着急,网友:真实了...
- java重置radiobutton的选项_动态添加试题选项按钮 radioButton(一)
- java request.getparameter为何能取值_request.getParameter(“xxx”)的参数的取值
- Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
- ElasticSearch 全文检索— ElasticSearch 基本操作
- day24-XSS过滤及单实例
- 内存非延续分派治理方法