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 相关文章推荐
简单解析Django框架中的表单验证
Jul 17 Python
python中enumerate函数遍历元素用法分析
Mar 11 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
python使用matplotlib绘制热图
Nov 07 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Pytorch之view及view_as使用详解
Dec 31 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
js封装成插件的步骤方法
2017/09/11 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python扫描端口的实现
2021/01/25 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
美国老牌主机服务商:iPage
2016/07/22 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
竞选班长演讲稿
2013/12/30 职场文书
秋游活动策划方案
2014/02/16 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP