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实现一个简单的多线程TCP服务器的教程
May 05 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
Python import与from import使用及区别介绍
Sep 06 Python
Python GUI布局尺寸适配方法
Oct 11 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
python binascii 进制转换实例
Jun 12 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
PyCharm如何导入python项目的方法
Feb 06 Python
Python中的xlrd模块使用原理解析
May 21 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
Python库安装速度过慢解决方案
Jul 14 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生成高清缩略图实例详解
2015/12/07 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
shell程序中如何注释
2012/01/28 面试题
2014年度个人工作总结范文
2015/03/09 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android