Python3.6简单反射操作示例


Posted in Python onJune 14, 2018

本文实例讲述了Python3.6简单反射操作。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#!python3
# -----------------------
# __Author : tyran
# __Date : 17-11-13
# -----------------------
class Base:
  def __init__(self):
    self.name = 'aaa'
    self.age = 18
  def show(self):
    print(self.age)
# 通过getattr()找到对象的成员
base = Base()
v = getattr(base, 'name')
print(v) # aaa
func1 = getattr(base, 'show')
func1() # 18
# 通过hasattr()查找成员是否存在
print(hasattr(base, 'name')) # True
print(hasattr(base, 'name1')) # False
# 通过setattr()给对象添加成员
setattr(base, 'k1', 'v1')
print(base.k1)
delattr(base, 'k1') # v1
# print(base.k1) 报错AttributeError: 'Base' object has no attribute 'k1'
# -------------------------------------------------------------------------
# Class也是一个对象
class ClassBase:
  sex = 'male'
  def __init__(self):
    self.name = 'aaa'
    self.age = 11
  @staticmethod
  def show():
    print('I am static')
  @classmethod
  def c_method(cls):
    print(cls.sex)
sex_value = getattr(ClassBase, 'sex')
print(sex_value)
s_func = getattr(ClassBase, 'show')
s_func()
c_func = getattr(ClassBase, 'c_method')
c_func()
# 这些都没问题
setattr(ClassBase, 'has_girlfriend', True) # 添加静态成员
print(ClassBase.has_girlfriend) # True
# ---------------同理,模块也是对象-------------
# 我新建了一个模块s1.py,我把内容复制下来
# class S1:
#   def __init__(self):
#     self.name = 'aaa'
#     self.age = 22
#
#   def show(self):
#     print(self.name)
#     print(self.age)
#
#
# def func1():
#   print('page1')
#
#
# def func2():
#   print('page2')
# 一个类,两函数
import s1
s1_class = getattr(s1, 'S1', None)
if s1_class is not None:
  c1 = s1_class()
  c1.show()
  # aaa
  # 22
getattr(s1, 'func1')() # page1
f2 = 'func2'
if hasattr(s1, f2):
  getattr(s1, 'func2')() # page2

注释中说明的s1.py如下:

# -*- coding:utf-8 -*-
#!python3
class S1:
  def __init__(self):
    self.name = 'aaa'
    self.age = 22
  def show(self):
    print(self.name)
    print(self.age)
def func1():
  print('page1')
def func2():
  print('page2')
# 一个类,两函数

程序运行结果:

Python3.6简单反射操作示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 提取文件的小程序
Jul 29 Python
在Python中使用lambda高效操作列表的教程
Apr 24 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
Django验证码的生成与使用示例
May 20 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
python3图片文件批量重命名处理
Oct 31 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
python将dict中的unicode打印成中文实例
May 11 Python
Python使用Matlab命令过程解析
Jun 04 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
Python3.6日志Logging模块简单用法示例
Jun 14 #Python
Python实现的knn算法示例
Jun 14 #Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 #Python
Tensorflow 查看变量的值方法
Jun 14 #Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 #Python
TensorFlow的权值更新方法
Jun 14 #Python
python字符串常用方法
Jun 14 #Python
You might like
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
js中less常用的方法小结
2017/08/09 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python常见数字运算操作实例小结
2019/03/22 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
高中生毕业评语
2014/12/30 职场文书
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript