27 isinstance与issubclass、反射、内置方法
isinstance与issubclass
issubclass:判断子类是否属于父类,是则返回True,否则返回False
isinstance:判断对象是否属于类,是则返回True,否则返回False
class Bar:
pass class Foo(Bar):
pass print(issubclass(Foo,Bar))#输出一个True
obj=Foo() print(isinstance(obj,Foo))#输出一个True
反射
反射:通过字符串来反射/映射到对象/类的属性上
class People:
def __init__(self,name,age):
self.name=name
self.age=age def run(self):
print('%s is running' %self.name) obj=People('egon',18) print(hasattr(obj,'name')) # 'name' in obj.__dict__ 判断属性是否在__dict__里
print(getattr(obj,'name')) # obj.__dict__['name'] 从__dict__里获取name,没有则会报错
print(getattr(obj,'xxx',None)) # obj.__dict__['xxx'] 设置没有找到返回None setattr(obj,'name','EGON') #obj.__dict__['name']='EGON' 更新
setattr(obj,'xxx',1111) #obj.__dict__['xxx']=111 delattr(obj,'name')
内置方法
# __str__: 在对象被打印时自动触发,可以用来定义对象被打印时的输出信息
# 注意:必须返回一个字符串类型的值
class People:
def __init__(self, name, age):
self.name = name
self.age = age def __str__(self):
print('run..........')
return '<name:%s age:%s>' % (self.name, self.age) obj1 = People('egon', 18)
print(obj1) # print(obj1.__str__())
# __del__: 在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源,比如系统资源
class Foo:
def __init__(self,x,filepath,encoding='utf-8'):
self.x=x
self.f=open(filepath,'rt',encoding=encoding) def __del__(self):
print('run.....')
# 回收对象关联的其他资源
self.f.close() obj=Foo(1,'a.txt')
del obj
print('主===========>')
# __call__: 在对象被调用时会自动触发该方法,可以用来???
# __call__: 在对象被调用时会自动触发该方法,可以用来???
27 isinstance与issubclass、反射、内置方法的更多相关文章
- 面向对象之isinstance与issubclass(python内置方法)
isinstanceissubclass TOC isinstance 判断一个对象是否是另外一个类的实例,返回布尔值. 是:True 否:False class Foo: pass class Bo ...
- python基础之反射内置方法元类
补充内置函数 isinstance(obj,Foo) # 判断obj是不是foo的实例 issubclass() # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...
- 多态 鸭子类型 反射 内置方法(__str__,__del__) 异常处理
''' 1什么是多态 多态指的是同一种/类事物的不同形态 2 为何要有多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 多态性的好处: 1增加了程序的 ...
- isinstance,issubclass,内置函数__str__和__repr__,__format__,dir()函数
isinstance(obj,cls) 检查是否obj是否是类 cls 的对象 #对象与类之间的关系 判断第一个参数是否是第二个参数的实例 # 身份运算 # 2 == 3 # 值是否相等# 2 is ...
- python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用
内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...
- 面向对象(五)--isinstance与issubclass方法、反射、内置方法(部分)、异常处理
一.isinstance与issubclass方法 1.isinstance是用来判断对象是否是某个类 isinstance(obj,class) 2.issubclass是用来判断一个类是否为另一个 ...
- 面向对象(五)——isinstance与issubclass、反射、内置方法
isinstance与issubclass.反射.内置方法 一.isinstance与issubclass方法 1.isinstance是用来判断对象是否是某个类 isinstance(obj,cla ...
- Python27天 反射 ,isinstance与ssubclass 内置方法
所学内容 反射 1.hasattr ( 判断一个属性在对象里有没有 ) -------------------- [对象,字符串属性]本质是:# 判断 ' name ' in obj.__dict__ ...
- Python之面向对象之反射、内置方法
一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...
随机推荐
- pycharm的安装(图文)
pycharm的安装, PyCharm是一种 IDE,可以在里面对python代码调试.语法高亮.Project管理.跳转.智能提示.自动完成.单元测试.版本控制.pycharm提供了一些高级功能,以 ...
- 设置https以及http转https的问题
公司用的是阿里云服务器win2008server r2 ,环境是phpwamp,出现许多问题.2018-11-12 一 设置https 1.设置httpd.ini 取消以下三个配置的# LoadMod ...
- 限制IP远程访问
方法一:通过hosts.allow和hosts.deny文件进行ip限制 在/etc/目录下,同时存在hosts.allow和hosts.deny文件 如果我们希望某些ip不能访问,那么我们可以打开h ...
- pta6-17(另类堆栈)
题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101313244872126464 题意:一种新的堆栈,用Top表 ...
- 1、list 的一些相关操作 2、增删改查 3、tuple 的操作 4、range
1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 # lst = [1, "周杰伦" ...
- 【转】iOS 自动化性能采集
前言 对于iOS总体生态是比较封闭的,相比Android没有像adb这种可以查看内存.cpu的命令.在日常做性能测试,需要借助xcode中instruments查看内存.cpu等数据. 但是借助i ...
- 对arm裸板调试的理解
由于arm芯片一般都包含的由jtag调试这项功能,cpu向外部发出信号时,一般都要同jtag发送出去,它就像一个路口的交警一样,能够控制车辆的运行,当然在arm中指的是cpu发出的数据和地址,我们在调 ...
- vue 登录前做校验this.$router.push(location)
有很多按钮在执行跳转之前,还会执行一系列方法,这时可以使用 this.$router.push(location) 来修改 url,完成跳转 例如:登录按钮,点击时需要先判断验证码等是否正确,此时
- JQuery UI之Autocomplete(3)属性与事件
1.Autocomplete的属性 首先引入css和js文件,以及对应的HTML代码如下: <link href="../css/jquery-ui.css" rel=&qu ...
- YII2中分页组件的使用
当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件. 首先我们创建操作数据表的AR模型: <?php namespace app\models; use y ...