和类相关的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. 实例成员:类的每个实例拥有自己的各个类成员的副本,这些成员称为实例成员. 改变一个实例字段 ...
随机推荐
- (线性dp 最大子段和 最大子矩阵和)POJ1050 To the Max
To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54338 Accepted: 28752 Desc ...
- 跨域、curl、snoopy、file_get_contents()
定义:可以称为”信息采集/模拟登录”技术,可以实现对某个地址做请求,同时按照要求传递get或post参数. curl本身是php的一个扩展,同时也是一个利用URL语法规定来传输文件和数据的工具,支持很 ...
- Microsoft Windows CVE-2017-8464 LNK 远程代码执行漏洞(复现)
2017年6月13日,微软官方发布编号为CVE-2017-8464的漏洞公告,官方介绍Windows系统在解析快捷方式时存在远程执行任意代码的高危漏洞,黑客可以通过U盘.网络共享等途径触发漏洞,完全控 ...
- ajax 小练习
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Con ...
- php 4种传值方式
我们定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用. 第一种: 使用客户端浏览器的cookie.cookie很 ...
- python调用shell命令之三慷慨法
preface: 忙于近期的任务,须要用到libsvm的一些命令.如在终端执行java svm_train train_file model_file. pythonsubset.py file tr ...
- 关于react上线系列问题及解决方案
近使用react做了一个音乐播放器小项目,在线下开发完成后,测试一切都没有问题,于是打算打包上线.首先注册了一个新浪云账号,然后创建了一个SAE应用实例,再然后就照着新浪云给出的远程仓库进行push. ...
- photoshop 切图技巧
前端切图技巧 手动切图 参考线切图 精准切图 自动切图 原文地址 http://www.cnblogs.com/w-wanglei/p/5598336.html
- HDU - 4614 Vases and Flowers(二分+区间修改)
https://cn.vjudge.net/problem/HDU-4614 题意 n个花瓶,m个操作,花瓶里面有的有花,有的是空的.1操作是从a开始往右放b朵花,花瓶有了的不放,跳过,直到a右边都放 ...
- Spark源码剖析 - SparkContext的初始化(十)_Spark环境更新
12. Spark环境更新 在SparkContext的初始化过程中,可能对其环境造成影响,所以需要更新环境,代码如下: SparkContext初始化过程中,如果设置了spark.jars属性,sp ...