isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)
1.isinstance/type/issubclass
1.type
显示对象的类,但是不会显示他的父类
2.isinstance
会显示的对象的类,也会去找对象的父类,填写参数是对象,类isinstance(对象,类)如果对象属于后面的类会报Ture,反之False
3.issubclass
与isinstance 相似不过他填写的参数是类与类
4.总结
来说:type(对象)不会认为子类是一种父类类型;isinstance(对象,类)会认为子类是一种父类类型。
2.反射(hasattr,getattr,setattr,delattr)
反射就是通过字符串来操作类或者对象的属性
反射本质就是在使用内置函数,其中反射有以下四个内置函数:
1. hasattr:判断一个方法是否存在与这个类中
2. getattr:根据字符串去获取obj对象里的对应的方法的内存地址,加"()"括号即可执行
3. setattr:通过setattr将外部的一个函数绑定到实例中
4. delattr:删除一个实例或者类中的方法
1.hasattr
用法: print(hasattr(对象,对象的方法或者特征),)后面内容必须为字符串的格式,如果有返回True,没有返回False
2.getattr
简单的用法:print(getattr(对象,对象的方法或者特征)),后面内容必须为字符串的格式,后面的内容必须对象有的,也返回其特征对应的内容
详细的用法:
getattr(实例化的类, '属性或者方法','没有找到属性或者方法返回的内容')
如果没有填写
没有找到属性或者方法的返回内容他会抛异常如果到了属性或者方法,其的返回值就是他的属性或者方法
示例
class A:
def __init__(self):
self.name = 'nick'
# self.age='18'
def method(self):
print("method print")
return 111
a = A()
print(getattr(a, 'name','not find')) # 如果a 对象中有属性name则打印self.name的值,否则打印'not find'
print(getattr(a, 'age','not find')) # 如果a 对象中有属性age则打印self.age的值,否则打印'not find'
print(getattr(a, 'method', 'default')) # 如果有方法method,否则打印其地址,否则打印default
print(getattr(a, 'method', 'default')()) # 如果有方法method,运行函数并打印接受他的返回值否则打印default
3.seattr
用法:setattr(YwY,',对象的方法或者特征,对应的值) , 如果没有该特征或者方法会新增,如果有则替换
4.delattr
用法:delattr(YwY,',对象的方法或者特征),删除对象拥有的方法或者特征
isinstance/type/issubclass的用法,反射(hasattr,getattr,setattr,delattr)的更多相关文章
- python反射hasattr getattr setattr delattr
反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)o ...
- 反射hasattr; getattr; setattr; delattr
hasattr(obj,name_str):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者Falsegetattr(obj,name_str):#根据字符串去获取对 ...
- python 内置函数的补充 isinstance,issubclass, hasattr ,getattr, setattr, delattr,str,del 用法,以及元类
isinstance 是 python中的内置函数 , isinstance()用来判断一个函数是不是一个类型 issubclass 是python 中的内置函数, 用来一个类A是不是另外一个 ...
- Python hasattr,getattr,setattr,delattr
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反 ...
- hasattr getattr setattr delattr --> (反射)
class Room: def __init__(self,name): self.name = name def big_room(self): print('bigroot') R = Room( ...
- 反射(hasattr , getattr, setattr) 输入的字符串用来运行程序
当用户输入字符串时,不能够用来运行程序 1.使用 hasattr 找出输入的字符串是否在程序内 2.使用 getattr 返回找出字符串对应的函数的内存地址或者变量 3. 使用setattr 添加新的 ...
- python动态函数hasattr,getattr,setattr,delattr
hasattr(object,name) hasattr用来判断对象中是否有name属性或者name方法,如果有,染回true,否则返回false class attr(): def fun( ...
- Python类总结-反射及getattr,setattr
类反射的四个基本函数 hasattr getattr setattr delattr #反射 class BlackMedium: feature = 'Ugly' def __init__(self ...
- python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用
内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...
随机推荐
- Morris 轻量级 图表
Morris.js 是基于 jQuery 和 Raphaël 的轻量级矢量图形库,帮助开发人员轻松绘制各种形式的图表.示例: HTML: <div id="myfirstchart&q ...
- 给变量赋值,程序会跳到 HardFault_Handler的问题
原因:变量属于指针,该指针没有初始化
- C++迭代器 iterator
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...
- Qt中实现单例模式(SingleTon),大约有3种办法
Qt中实现单例模式(SingleTon) 单例模式分为“饥汉”和“饿汉”两种版本,也正是线程安全问题使得原本简单的单例模式变得复杂.由于单例模式很常用,Boost库中有强大的泛型单例实现,我也利用Qt ...
- Codility---MaxSliceSum
Task description A non-empty zero-indexed array A consisting of N integers is given. A pair of integ ...
- spring通过注解方式依赖注入原理 (私有成员属性如何注入)
一.spring如何创建依赖的对象 用过spring的都知道我们在dao.service层加上@repository.@Service就能将这两个对象交给spring管理,在下次使用的时候使用@res ...
- uni-app $refs的基本用法
$refs的基本用法 一个对象(Object),持有注册过 ref 特性 的所有 DOM 元素和组件实例. <template> <view class="containe ...
- surging 微服务引擎 2.0 会有多少惊喜?
surging 微服务引擎从2017年6月至今已经有两年的时间,这两年时间有多家公司使用surging 服务引擎,并且有公司搭建了CI/CD,并且使用了k8s 集群,这里我可以说下几家公司的服务搭建情 ...
- 参数传递机制之JWT
1. 什么是 JWT JWT 其全称为:JSON Web Token,简单地说就是 JSON 在 Web 上的一种带签名的标记形式.官方的定义如下: JSON Web Tokens are an op ...
- JavaScript 操作 DOM 总结
基本概念 DOM 是 JavaScript 操作网页的接口,全称为"文档对象模型"(Document Object Model).它的作用是将网页转为一个 JavaScript 对 ...