Python 反射-isinstance-issubclass-__str__-__del__
用到的
isinstance(对象,类) ------------------- 判断一个对象是否是一个类的实例
issubclass(子类,父类) ---------------- 判断一个类是否是一个类的子类
hasattr(对象,字符串属性) ------------ 判断一个属性在对象里有没有
getattr(对象,属性,第三参数) --------- 获取对象中的字符串属性
setattr(对象,属性,值) ------------------ 属性的赋值(设置值,修改值,新增值)
delattr(删除的属性) -------------------- 删除属性操作
__str__ ------------------------------------ 在对象被打印时自动触发,可以用来定义对象被打印时的输出信息(必须返回一个字符串类型的值)
__del__ ----------------------------------- 在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源,比如系统资源
isinstance和issubclass例子
class Bar:
pass class Foo(Bar):
pass obj = Foo()
print(issubclass(Foo, Bar))
>>>True
print(isinstance(obj, Foo))
>>>True
反射例子
class Ftp:
def get(self):
print('get') def put(self):
print('put') def login(self):
print('login') def run(self):
while True:
cmd = input('>>>: ').strip() # cmd='get'
if hasattr(self, cmd):
method = getattr(self, cmd)
method()
else:
print('输入的方法不存在') obj = Ftp()
obj.run()
__str__例子
在对象被打印时自动触发,可以用来定义对象被打印时的输出信息(注意: 必须返回一个字符串类型的值)
class People:
def __init__(self, name, age):
self.name = name
self.age = age def __str__(self):
return '<name:%s age:%s>' % (self.name, self.age) obj = People('egon', 18)
print(obj) # print(obj.__str__())
>>><name:egon age:18>
__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')
print('主===========>')
>>>主===========>
>>>run.....
Python 反射-isinstance-issubclass-__str__-__del__的更多相关文章
- 小学生绞尽脑汁也学不会的python(反射)
小学生绞尽脑汁也学不会的python(反射) 1. issubclass, type, isinstance issubclass 判断xxxx类是否是xxxx类的子类 type 给出xxx的数据类型 ...
- Day08:继承与派生,多态,封装,绑定与非绑定方法,面向对象高级(反射,__str__,__del__)
上节课复习:1.编程思想 面向过程 核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维 ...
- 方法和函数,isinstance/issubclass/type以及反射
一丶,isinstance/issubclass/type 1.issubclass检查第一个参数是否是第二个参数的 子子孙孙类 class Foo(): pass class Boo(Foo): p ...
- 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反射和内置方法(双下方法)
Python反射和内置方法(双下方法) 一.反射 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发 ...
- 面向对象~~类的成员: 私有成员,公有成员, 实例方法, 类方法, 静态方法, 属性(property), isinstance ,issubclass, 元类(type)
一 私有成员公有成员 公有成员: 在任何地方都能访问 私有成员: 只有在类的内部才能访问 类从加载时,只要遇到类中的私有成员,都会在私有成员前面加上_类名 二 实例方法 实例方法就是类的实例能够使用的 ...
- python 反射
python 反射的核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动! 反射的四个基本函数使用 hasattr,getattr,setatt ...
- python反射
python反射 python的反射是基于字符串的形式去对象(模块)中操作其成员.此操作是动态的,常用于web开发中url参数中对应模块或者函数的反射. 下面开始具体说明: 场景需求: 我的pytho ...
- Python中__repr__和__str__区别
Python中__repr__和__str__区别 看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): ...
随机推荐
- springboot(八) 嵌入式Servlet容器自动配置原理和容器启动原理
1.嵌入式Servlet容器自动配置原理 1.1 在spring-boot-autoconfigure-1.5.9.RELEASE.jar => springboot自动配置依赖 jar包下,E ...
- linux系统 for 大数据
使用大数据前,需要选择linux系统,本人选择的是centos6.9系统,并且装在虚拟机上,并且要注意: 1.网络类型选择NAT. 2.语言设置为English(English). 3.操作系统的键盘 ...
- [2010国家集训队]Crash的旅游计划
Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Crash和陶陶所要去的城市里有N (N > 1) 个景点,Cra ...
- 51nod 1088 最长回文子串
1088 最长回文子串 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一 ...
- 2017 JUST Programming Contest 3.0 I. Move Between Numbers
I. Move Between Numbers time limit per test 2.0 s memory limit per test 256 MB input standard input ...
- Fools and Roads CodeForces - 191C
Fools and Roads CodeForces - 191C 题意:给出一棵n个节点的树,还有树上的k条简单路径(用路径的两个端点u和v表示),对于树上每一条边,求出其被多少条简单路径经过. 方 ...
- HttpURLConnection教程
1.Class Overview An URLConnection for HTTP (RFC 2616) used to send and receive data over the web. Da ...
- 202 Happy Number 快乐数
写一个算法来判断一个数是不是“快乐数”.一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,或是无限循环但始终变不到 1.如 ...
- Android开发学习——android数据存储
Android的存储 Android中的数据存储方式及其存储位置 SharedPrefrence存储 1). 位置 /data/data/packageName/shared_pr ...
- 简单探讨弹性布局flex
css 弹性布局: 盒子模型: box-sizing属性1.content-box 正常的普通的盒子模型用padding和border会使盒子变大:(向外扩张)2.border-box 盒子模型,pa ...