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 相关文章推荐
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
通过源码分析Python中的切片赋值
May 08 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
python实现简单多人聊天室
Dec 11 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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 变量类型的强制转换
2009/10/23 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
写JQuery插件的基本知识
2013/11/25 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JS简单计算器实例
2015/01/20 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
Vue Router中应用中间件的方法
2020/08/06 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
Python中decorator使用实例
2015/04/14 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
仓管员岗位责任制
2014/02/19 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
合伙协议书
2014/04/23 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
生日寿星公答谢词
2015/09/29 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫