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 14 Python
python 禁止函数修改列表的实现方法
Aug 03 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
python3的输入方式及多组输入方法
Oct 17 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
浅谈django channels 路由误导
May 28 Python
python中if及if-else如何使用
Jun 02 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
Nov 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
深入php 正则表达式的学习探讨
2013/06/06 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python实现图片插入文字
2019/11/26 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
《桃林那间小木屋》教学反思
2014/05/01 职场文书
局火灾防控工作方案
2014/05/25 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
离职证明范本
2015/06/12 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Python实现视频自动打码的示例代码
2022/04/08 Python