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编写批量卸载手机中安装的android应用脚本
Jul 21 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python基于PycURL实现POST的方法
Jul 25 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
python批量复制图片到另一个文件夹
Sep 17 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
python异常触发及自定义异常类解析
Aug 06 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
Python中if有多个条件处理方法
Feb 26 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
python元组拆包实现方法
Feb 28 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
西德产收音机
2021/03/01 无线电
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
php实现微信企业转账功能
2018/10/02 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
常见的浏览器Hack技巧整理
2017/06/29 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
node使用request请求的方法
2019/12/20 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
Python中的localtime()方法使用详解
2015/05/22 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
tensorflow常用函数API介绍
2020/04/19 Python
会议开场欢迎词
2014/01/15 职场文书
医院科室评语
2015/01/04 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技