day23-1 isinstance、issubclass和反射
isinstance和issubclass
- isinstance(obj,cls)检查obj是否是cls的对象,它会检查父类
class Foo:
pass
f = Foo()
print(isinstance(f,Foo)) # f是Foo的实例化对象,所以打印True
True
class Foo(object):
pass
class Bar(Foo):
pass
print(isinstance(Bar(), Foo)) # 可以检查父类
True
- type()也可以用来获取实例化出对象的类,但它不能检测父类
class Foo(object):
pass
class Bar(Foo):
pass
print(type(Foo()) == Foo) # Foo()是Foo的实例化对象,type(Foo())就是Foo
print(type(Bar()) == Foo) # Bar()是Bar的实例化对象,type(Bar())是Bar,所以返回False
True
False
- issubclass(sub,super)检查sub类是否是super的子类或派生类
class Foo:
pass
class Bar(Foo):
pass
print(issubclass(Bar,Foo)) # Bar是Foo的子类,所以打印True
True
反射(hasattr,getattr,setattr,delattr)
1.反射就是通过字符串来操作类或者对象的属性
2.反射本质就是在使用内置函数,其中反射有以下四个内置函数:
- hasattr: 通过字符串判断一个属性是否存在这个类或对象中
- getattr:通过字符串获取类或对象中的某个属性
- setattr:通过字符串修改类或对象的属性
- delattr:通过字符串删除类或对象的属性
class Foo:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
f = Foo('nick', '18')
print(hasattr(f, 'name')) # True
print(hasattr(f, 'gender')) # False
print(getattr(f, 'name')) # nick
print(getattr(f, 'gender', None)) # 不存在该属性时返回第三个参数None,不写会报错
setattr(f, 'gender', 'male')
print(f.gender) # male
delattr(f, 'gender')
print(f.__dict__) # {'name': 'nick', 'age': '18'}
day23-1 isinstance、issubclass和反射的更多相关文章
- 方法和函数,isinstance/issubclass/type以及反射
一丶,isinstance/issubclass/type 1.issubclass检查第一个参数是否是第二个参数的 子子孙孙类 class Foo(): pass class Boo(Foo): p ...
- 面向对象(五)——isinstance与issubclass、反射、内置方法
isinstance与issubclass.反射.内置方法 一.isinstance与issubclass方法 1.isinstance是用来判断对象是否是某个类 isinstance(obj,cla ...
- 面向对象~~类的成员: 私有成员,公有成员, 实例方法, 类方法, 静态方法, 属性(property), isinstance ,issubclass, 元类(type)
一 私有成员公有成员 公有成员: 在任何地方都能访问 私有成员: 只有在类的内部才能访问 类从加载时,只要遇到类中的私有成员,都会在私有成员前面加上_类名 二 实例方法 实例方法就是类的实例能够使用的 ...
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
- python 全栈开发,Day23(复习,isinstance和issubclass,反射)
一.复习 class A: def func1(self):pass def func2(self): pass def func3(self): pass a = A() b = A() print ...
- 27 isinstance与issubclass、反射、内置方法
isinstance与issubclass issubclass:判断子类是否属于父类,是则返回True,否则返回False isinstance:判断对象是否属于类,是则返回True,否则返回Fal ...
- python基础之类的isinstance与issubclass、反射
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo: pass o ...
- isinstance、issubclass、反射
一.isinstance.issubclass # isinstance(obj, cls) 检查obj是否是cls的对象 class A(object):pass a = A() print(isi ...
随机推荐
- 建立自己的私有docker(ssl&login auth)
建立私有docker需要先建立ssl证书,然后建立htpass的登陆证书 最后使用nginx配置docker-compose.yml 参考: https://www.digitalocean.com/ ...
- YTU 2441: C++习题 复数类--重载运算符2+
2441: C++习题 复数类--重载运算符2+ 时间限制: 1 Sec 内存限制: 128 MB 提交: 847 解决: 618 题目描述 定义一个复数类Complex,重载运算符"+ ...
- DOM方式解析xml实例2
老样子,javabean实体类: import java.io.*; public class Book implements Serializable { private int id; priva ...
- AutoIT: WinSetState可以定义窗口大小
Example() FuncExample() ; Run Notepad Run("notepad.exe") ; Wait seconds for the Notepad wi ...
- 常用的 Nand Flash 指令如下:
指令 功能 nand info 显示可使用的 Nand Flash nand device [dev] 显示或设定当前使用的 Nand Flash nand read addr off size ...
- zoj 3861(dfs)
Valid Pattern Lock Time Limit: 2 Seconds Memory Limit: 65536 KB Pattern lock security is genera ...
- 1.jeesite环境搭建
安装部署 1. 运行Maven目录下的settings.bat文件,用来设置maven仓库路径,并按提示操作(设置PATH系统变量.配置Eclipse). 2. 执行jeesite/bin/eclip ...
- MVC视图中下拉框的使用
一.一般变量或对象的绑定 首先要在controller 中将选项设置成 selecList对象,并赋值给viewBag动态对象. public ActionResult Index(string mo ...
- 解决Linux与Windows压缩解压中文文件名乱码(转载)
转自:http://crazyfeng.com/linux-windows-compress-chinese-filename.html 由于Linux与Windows编码问题,使用Zip Tar 压 ...
- 在Centos下安装httpd、php、Mysql并配置(转载)
转自:http://club.jledu.gov.cn/?action-viewspace-itemid-299020 1.安装Apahce, PHP, Mysql, 以及php连接mysql库组件. ...