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冒泡排序简单实现方法
Jul 09 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
python实现按行分割文件
Jul 22 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
基于Python中的yield表达式介绍
Nov 19 Python
基于Python实现扑克牌面试题
Dec 11 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 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
Javascript调试工具(下载)
2007/01/09 Javascript
List Installed Software Features
2007/06/11 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
python去掉字符串中重复字符的方法
2014/02/27 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Python调用Windows命令打印文件
2020/02/07 Python
Keras loss函数剖析
2020/07/06 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
P/Invoke是什么
2015/07/31 面试题
临床医学大学生求职信
2013/09/28 职场文书
视光学专业毕业生推荐信
2013/10/28 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
清明节寄语2015
2015/03/23 职场文书
mysql的Buffer Pool存储及原理
2022/04/02 MySQL