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 相关文章推荐
windows下ipython的安装与使用详解
Oct 20 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
python程序 创建多线程过程详解
Sep 23 Python
python 实现矩阵填充0的例子
Nov 29 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
python numpy数组中的复制知识解析
Feb 03 Python
使用wxpy实现自动发送微信消息功能
Feb 28 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
document.all还是document.getElementsByName?
2006/07/21 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python调用命令行进度条的方法
2015/05/05 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
自动一体化专业求职信
2014/03/15 职场文书