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对Json的解析
Feb 14 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
python实现图片文件批量重命名
Mar 23 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
对django中foreignkey的简单使用详解
Jul 28 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
python中字符串的编码与解码详析
Dec 03 Python
Python urllib request模块发送请求实现过程解析
Dec 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
无限级别菜单的实现
2006/10/09 PHP
BBS(php & mysql)完整版(二)
2006/10/09 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
详解python算法之冒泡排序
2019/03/05 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
pandas-resample按时间聚合实例
2019/12/27 Python
python实现滑雪游戏
2020/02/22 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
2015年三年级班主任工作总结
2015/05/21 职场文书
学历证明样本
2015/06/16 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书