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解析xml模块封装代码
Feb 07 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Python  Django 母版和继承解析
Aug 09 Python
Python3视频转字符动画的实例代码
Aug 29 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
Python日志syslog使用原理详解
Feb 18 Python
Python importlib动态导入模块实现代码
Apr 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
vue按需加载实例详解
2019/09/06 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
出国留学自荐信
2013/10/25 职场文书
法学个人求职信范文
2014/01/27 职场文书
诚信考试承诺书
2014/03/27 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
GO中sync包自由控制并发示例详解
2022/08/05 Golang