和类相关的BIF
issubclass(class,classinfo),判断第一个参数是第二个参数的子类,这个判断是比较宽松的判断。因为第二个参数也可以是元组,并且只要参数1是元组内任意一个元素的子元素,就会返回True。
>>> class A:
pass >>> class B:
pass >>> class C(A):
pass >>> issubclass(C,A)
True
>>> issubclass(C,B)
False
#C是元组内任意一个元素的子类即返回True
>>> issubclass(C,(A,B))
True
>>> issubclass(C,(B,A))
True
C同时是C自己的子类
>>> issubclass(C,C)
True
#object是所有类的基类
>>> issubclass(A,object)
True
isinstance(object,classinfo),判断参数1是参数2(一定要是一个类,如果不是类那么会抛出TypeError)的对象:
#实例化一个c
>>> c = C()
#判断c是C的实例化对象
>>> isinstance(c,C)
True
#判断c是B的实例化对象
>>> isinstance(c,B)
False
#由于C是A的子类,所以c也是A的对象
>>> isinstance(c,A)
True
#由于object是所有类的基类所以c也是object的实例化对象
>>> isinstance(c,object)
True
#判断c是否是元组内某个元素的实例化对象
>>> isinstance(c,(A,B))
True
# 当第二个参数不是类的时候,抛出TypeError异常
>>> isinstance(c,1)
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
isinstance(c,1)
TypeError: isinstance() arg 2 must be a type or tuple of types
>>>
hasattr(object,name),测试一个对象是否有指定的属性。
>>> class C(A):
def __init__(self,x):
self.x = x #为属性x赋初始值 >>> c = C(10)
#判断x是否是对象c中的属性 参数2一定要加引号
>>> hasattr(c,'x')
True
>>> hasattr(c,'a')
False
#如果参数2不带引号,则会抛出异常
>>> hasattr(c,x)
Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
hasattr(c,x)
NameError: name 'x' is not defined
>>>
getattr(object,name[,default]),在一个对象中获取指定属性,参数1(object)是实例化对象,参数2(name)是属性名,参数3(default)是可选参数,当不设置参数3的时候如果这个时候访问的属性不存在,则会抛出异常,但是如果设置参数3,则会将参数3抛出,相对比较友好。
>>> getattr(c,'x')
10
>>> getattr(c,'xx')
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
getattr(c,'xx')
AttributeError: 'C' object has no attribute 'xx'
>>> getattr(c,'xx','您访问的属性不存在')
'您访问的属性不存在'
>>>
setattr(object,name,value),访问对象属性,并且给该属性赋值,如果该属性不存在,则会为该对象创建该属性,并且赋值,三个参数都不能为空
>>> setattr(c,'y','我爱中国')
>>> getattr(c,'y')
'我爱中国'
>>> setattr(c,'y')
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
setattr(c,'y')
TypeError: setattr expected 3 arguments, got 2
>>> setattr(c,'y','爱国主义者')
>>> getattr(c,'y')
'爱国主义者'
>>>
delattr(object,name),删除对象属性,如果属性不存在,抛出异常
>>> delattr(c,'y')
>>> delattr(c,'xx')
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
delattr(c,'xx')
AttributeError: xx
>>>
property(fget=None,fset=None,fdel=None,doc=None),它的作用是在一个类中设置一个属性来方便调用这个类中的其他属性。
>>> class C():
def __init__(self,size=10):
self.size = size
def getSize(self):
return self.size
def setSize(self,value):
self.size = value
def delSize(self):
del self.size
x = property(getSize,setSize,delSize) >>>
>>> c1 = C()
#在没有定义property以前我们访问和设置方法属性
>>> c1.setSize(10)
>>> c1.getSize()
10
#定义了property之后我们访问和设置方法属性
>>> c1.x
10
>>> c1.x = 20
>>> c1.x
20
>>> del c1.x
>>> c1.x
Traceback (most recent call last):
File "<pyshell#85>", line 1, in <module>
c1.x
File "<pyshell#76>", line 5, in getSize
return self.size
AttributeError: 'C' object has no attribute 'size'
>>>
和类相关的BIF的更多相关文章
- Python学习笔记008_类_对象_继承_组合_类相关的BIF
# 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...
- 类相关的BIF
1.>>> issubclass(C,A)#判断c是A的子类,返回真假 2.>>> isinstance(b1,B) #判断c1是B类的实例化对象,返回真假 3.& ...
- 类和对象:一些相关的BIF - 零基础入门学习Python040
类和对象:一些相关的BIF 让编程改变世界 Change the world by program 一些类和对象相关的 BIF 今天我们来谈谈跟类和对象相关的一些BIF(内置函数): issubcla ...
- 课时40:类与对象:一些相关的BIF
目录: 一.一些相关的BIF 二..课时40课后习题及答案 ********************** 一.一些相关的BIF ********************** 1.issubclass( ...
- python语法学习第十天--类与对象相关的BIF、魔法方法
一些相关的BIF: issubclass(class,classInfo)#判断是否为子类,classInfo可以为多个类的元组,其中一个是,返回true,一个类也被认为是自己的子类,object是所 ...
- C#异常类相关总结
C#异常类相关总结 C#异常类相关总结 C#异常类一.基类ExceptionC#异常类二.常见的异常类1.SystemException类:该类是System命名空间中所有其他异常类的基类.(建议:公 ...
- Class类相关
Class类是java.lang包中的类,该类的实例可以帮助程序创建其他类的实例或者取得其他类的对象的内部信息 使用class类获得一个类相关的class类(注意得到的是class类,不是相关的类) ...
- 多线程(二)~Thread类相关的API介绍
一.线程安全问题: 当我们使用多个线程操作统一方法内的局部变量的时候,每个局部变量在当前线程里都有自己的副本,这种情况是不会出现线程安全问题的.当我们两个线程同时操作全局变量的时候,有可能 ...
- C#图解教程学习笔记——类相关的概念
一.一些基本概念1. 字段:隶属于类的变量,即类的成员变量.2. 方法:隶属于类的函数,即类的成员函数.3. 实例成员:类的每个实例拥有自己的各个类成员的副本,这些成员称为实例成员. 改变一个实例字段 ...
随机推荐
- css换行
1. word-break:break-all;只对英文起作用,以字母作为换行依据 2. word-wrap:break-word; 只对英文起作用,以单词作为换行依据 3. white-space: ...
- python: 基本知识(二)
1.set() set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. x = set('hello’) y = set('world') x ---- ...
- 10款 Mac 经典原型设计开发软件推荐
在Mac上有大量强大的开发和设计工具,今天和大家推荐10款Mac上的经典原型设计开发工具,原型设计工具是开发者必备的一款工具,无论是网站开发还是移动APP开发,都需要在前期进行严格细致的原型设计,才能 ...
- mac/Linux源码安装TensorFlow
因为用pip命令直接下载安装会链接到google,导致打不开,比如使用pip install tensorflow碰到如下的问题.因此在本文中,主要介绍了如何通过源码进行TensorFlow的安装 $ ...
- 浅析基于ARM的Linux下的系统调用的实现
在Linux下系统调用是用软中断实现的,下面以一个简单的open例子简要分析一下应用层的open是如何调用到内核中的sys_open的. t8.c 1: #include <stdio.h> ...
- Zabbix Server 自带模板监控有密码MySQL数据库
Zabbix Server 自带模板监控有密码MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Zabbix-agent端的配置 1>.为数据库设置密码 ...
- Neo4j社区版配置文件
#*****************************************************************# Neo4j configuration## For more d ...
- maven坑-Failure to transfer org.apache.maven:maven
参考网址:http://www.mkyong.com/maven/how-to-convert-maven-java-project-to-support-eclipse-ide/ https://b ...
- 虚拟机复制问题:如何解决“无法手动启动VMware Tools安装”问题
摘录网址:https://jingyan.baidu.com/article/3c48dd348c4504e10ae35810.html 环境描述: VMware Workstation Ubuntu ...
- python css盒子型 浮动
########################总结############### 块级标签能够嵌套某些块级标签和内敛标签 内敛标签不能块级标签,只能嵌套内敛标签 嵌套就是: <div> ...