Python 类的一些BIF
issubclass
issubclass(cls, class_or_tuple, /)
Return whether 'cls' is a derived from another class or is the same class.
class A:
pass class B(A):
pass class C:
pass print(issubclass(A,(B,A))) # 一个类会被认为自己的子类 . print(issubclass(A,B)) # 第一个是否是第二个类的子类 print(issubclass(B,(A,C))) help(issubclass)
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
True
False
>>>
isinstance
#isinstance 检查一个实例对象是否属于一个类 . (第二个也可以是一个元祖 可以有多个类.)
class A:
pass class B(A):
pass class C:
pass b1=B()
print(isinstance(b1,A)) print(isinstance(b1,B)) print(isinstance(b1,C)) print(isinstance(b1,(C,B)))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
False
True
>>>
hasattr 判断一个 对象里面有没有该属性
# hasattr(第一个是对象.第二个是属性名) (attr=attribute 属性)
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x #测试一个对象是否有指定的和属性.
c1=C()
print(hasattr(c1,'x'))# 属性必须用 '' 来 修饰
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
>>>
getattr(实例对象,属性,不存在打印的值)(attribute 属性) 得到一个实例对象的属性的值 , 如果该属性不存在则打印第三个参数
# getattr(object,name[,default) 返回对象指定的属性值 如果指定的参数不存在 如果你制订了default则会defaulf打印出来,否则会有一个arrtibute的异常 ,
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C() print(getattr(c1,'x'))
print(getattr(c1,'y','您所访问的属性不存在'))
0
您所访问的属性不存在
>>>
setattr(实例对象,属性,值) 给实例对象一个属性值 如果该属性不存在则 建立属性然后赋值 .
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C()
print(getattr(c1,'y','您访问的属性不存在')) print(setattr(c1,'y',0)) print(getattr(c1,'y','您访问的属性不存在'))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
>>>
delattr(实例变量,属性) 属性不存在则抛出 AttributeError的异常
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C()
print(getattr(c1,'y','您访问的属性不存在')) print(setattr(c1,'y',0)) print(getattr(c1,'y','您访问的属性不存在')) print(delattr(c1,'y')) print(getattr(c1,'y','您访问的属性不存在'))
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
None
您访问的属性不存在
>>>
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() # 生成一个 对象实例 print(c1.getSize()) # 调用getSize()函数 . print(c1.x) c1.x=18 print(c1.size) # 调用 size 属性 . print(c1.getSize()) del c1.x print(c1.size)
=============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
10
10
18
18
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/new.py", line 30, in <module>
print(c1.size)
AttributeError: 'C' object has no attribute 'size'
>>>
Python 类的一些BIF的更多相关文章
- Python类中super()和__init__()的关系
Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...
- LightMysql:为方便操作MySQL而封装的Python类
原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python ...
- python 类属性与方法
Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...
- python 类以及单例模式
python 也有面向对象的思想,则一切皆对象 python 中定义一个类: class student: count = 0 books = [] def __init__(self ...
- Python类的特点 (1):构造函数与方法
Python中,类的特点: #encoding:utf-8 class Parent(object): x=1 #x是Parent类的属性(字段) def __init__(self): print ...
- Python类属性,实例属性
1.Python类数据属性:定义在类里面但在函数外面的变量,它们都是静态的. #一段很简单的代码,但反应了很多 >>> class A(): a=1 #一个类里面有个属性a > ...
- python类及其方法
python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...
- python类的定义和使用
python中类的声明使用关键词class,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就用object作为基类. 定义格式: class 类名(object): "类的说明文档 ...
- Python类的探讨
我们下面的探讨基于Python3,我实际测试使用的是Python3.2,Python3与Python2在类函数的类型上做了改变 1,类定义语法 Python类定义以关键字class开头,一个类定义例 ...
随机推荐
- Core Data系列文章(一)Core Data基础
在iOS开发数据库SQLite的使用介绍了iOS中使用SQLite对数据进行持久化存储,实际上是对数据库直接进行操作,而苹果专门有一套API来间接的对数据进行持久化存储,而且主要针对用户创建的对象 - ...
- Longest Consecutive Sequence [LeetCode]
Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...
- iOS开发 iOS10推送必看
iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 一.简单入门篇---看完就可以简单适配完了 相对简单的推送证书以及环境的问题,我就不在这 ...
- maven install 时提示“程序包 javax.crypto不存在”
但是javax.crypto是在jdk的jre\lib目录下的 解决方案: <compilerArguments> <bootclasspath>${java.home}/li ...
- 两段超简单jquery代码解决iframe自适应高度问题(不用判断浏览器高度)
这里介绍两个超级简单的方法,不用写什么判断浏览器高度.宽度啥的.下面的两种方法自选其一就行了.一个是放在和iframe同页面的,一个是放在test.html页面的.注意别放错了地方.iframe的代码 ...
- HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
答案:在将WebDataHelper升级到VS2013是出现的这个错误,这个程序使用了URL重写的技术, 解决方法是:需要将重写的配置,迁移到system.webServer配置节中
- Flume数据传输事务分析[转]
本文基于ThriftSource,MemoryChannel,HdfsSink三个组件,对Flume数据传输的事务进行分析,如果使用的是其他组件,Flume事务具体的处理方式将会不同.一般情况下,用M ...
- PHP Memcached应用实现代码
一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...
- Mac android 开发 sdk配置和手机连接
本文适合已经很熟悉android开发的人员: 首先安装Mac版的eclipse 其次是android sdk的准备: 由于android sdk在线更新很不方便,所以可以选择复制:准备好Mac下的an ...
- cf卡中,wtmp文件较大,导致磁盘空间满了
看了一下,有一个wtmp 和wtmp.1的文件非常大.wtmp记录的是机器注销.启动的信息.由此可见,机器长时间的不断重启,造成该日志记录超级大,把cf的空间给占满了. wtmp日志可以用who和la ...