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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Python语言的12个基础知识点小结
Jul 10 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
使用Python脚本来控制Windows Azure的简单教程
Apr 16 Python
Flask框架的学习指南之制作简单blog系统
Nov 20 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
Python实现CNN的多通道输入实例
Jan 17 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中使用XML
2006/10/09 PHP
关于crontab的使用详解
2013/06/24 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
《满井游记》教学反思
2014/02/26 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
客服专员岗位职责
2015/02/10 职场文书
养成教育工作总结
2015/08/13 职场文书
六年级语文教学反思
2016/03/03 职场文书
员工工作心得体会
2019/05/07 职场文书
银行求职信范文
2019/05/13 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
python基础入门之字典和集合
2021/06/13 Python