Python3.6简单反射操作示例
作者:Tyran_U 时间:2021-05-04 03:32:05
本文实例讲述了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')
# 一个类,两函数
程序运行结果:
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/tyrantu1989/article/details/78530180
标签:Python,反射


猜你喜欢
numpy给array增加维度np.newaxis的实例
2023-06-30 06:41:34
python3 读取Excel表格中的数据
2021-01-14 23:03:42
SQL SERVER 2008数据库日志文件收缩的方法
2024-01-27 09:29:38

numpy中实现ndarray数组返回符合特定条件的索引方法
2023-04-21 06:21:53

Python中的for循环详情
2022-04-11 04:30:54

轻松掌握怎样从Windows命令行启动MySQL
2009-02-23 17:18:00
python实现颜色rgb和hex相互转换的函数
2021-10-05 23:18:13
MySQL查询字段实现字符串分割split功能的示例代码
2024-01-22 03:18:55

使用 TRUNCATE TABLE 删除所有行
2008-04-24 19:20:00
用asp判断某IP是否属于某网段的另类算法
2007-09-28 12:33:00
python检索特定内容的文本文件实例
2022-12-29 12:05:42
Python变量、数据类型、数据类型转换相关函数用法实例详解
2021-03-29 08:30:35

Python递归函数 二分查找算法实现解析
2021-06-22 05:58:38

Python 将json序列化后的字符串转换成字典(推荐)
2021-11-17 12:36:51
详解Python在使用JSON时需要注意的编码问题
2022-08-03 22:06:36

ASP把数字用逗号每3位隔开显示代码
2008-01-02 13:11:00

Go 语言中 20 个占位符的整理
2024-04-23 09:45:21
JDBC如何获取数据库连接
2024-01-23 05:53:50
基于Python实现MUI侧滑菜单a标签跳转
2021-06-12 22:49:22

总结showModalDialog和showModelessDialog用法
2007-11-24 08:26:00