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 相关文章推荐
解决PyCharm中光标变粗的问题
Aug 05 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python3设计模式之简单工厂模式
Oct 17 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
Python生成器以及应用实例解析
Feb 08 Python
Python读写及备份oracle数据库操作示例
May 17 Python
Python单元测试简单示例
Jul 03 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
python xpath获取页面注释的方法
Jan 14 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
Python监控服务器实用工具psutil使用解析
Dec 19 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
自己做矿石收音机
2021/03/02 无线电
PHP4之真OO
2006/10/09 PHP
php缓存技术介绍
2006/11/25 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
python类型强制转换long to int的代码
2013/02/10 Python
python使用super()出现错误解决办法
2017/08/14 Python
实践Vim配置python开发环境
2018/07/02 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
2019/05/29 Python
使用python实现名片管理系统
2020/06/18 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
大学毕业感言
2014/01/10 职场文书
竞聘上岗演讲
2014/05/19 职场文书
商场父亲节活动方案
2014/08/27 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android