首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python反射

反射定义 根据字符串形式去某个对象中操作成员 根据字符串形式去一个对象中寻找成员 根据字符串形式去一个对象中设置成员 根据字符串形式去一个对象中删除成员 根据字符串形式去一个对象中判断成员是否存在...---- 初始反射 通过字符串形式,导入模块 根据用户输入模块名称,导入对应模块并执行模块中方法 # Python使用是3.5.1 [root@root ~]# python -V Python.../usr/bin/env python # _*_ coding:utf-8 _*_ # 输入模块名称 mod_name = input("请输入模块名称>>> ") # 查看输入内容及数据类型 print...f1 请输入函数名称>>>f1 # 返回内存地址 139844714989224 139844714989224 # 执行函数返回结果 F1 反射相关函数 getattr(object, name[...` 基于反射模拟Web框架路由系统 find_index.py文件内容 #!

41120

Python 反射

[1]用比喻来说,反射就是程序在运行时候能够“观察”并且修改自己行为。 以上是维基百科中对反射解释。我理解反射是在运行过程中,获取和修改未知对象属性和方法一种解决方案。...反射在一定程度上提供了灵活性和通用性,是程序在运行过程中根据实际需要执行额外操作。同时反射降低了代码可读性,为团队间协作制造了一定障碍。...Python反射 Python反射方法: hasattr(obj, name): 判断对象中是否有以 name 命名属性或方法。...,我们得到很多以 __ 开头和结尾属性,我们本身并没有定义这些属性,这些属性是 python 自动添加,它们保存了对象元数据,我们可以去读取这些属性,但是尽量不要修改他们,以免引起不必要错误。...反射应用 在使用 python 进行网络通信时,不可避免会使用到 json 格式,那么将一个类转换为 json 或将一个 json 转换为类对象,如果每次都手动将类属性转换为 json 数据,那么将是一个非常费力不讨好工作

71720
您找到你想要的搜索结果了吗?
是的
没有找到

Python_反射

一.反射定义 放射是指程序可以访问。检测和修改它本身状态或行为一种能力(自省)。 二.四个自省函数 Python中提供了以下四种自省函数,使用于类和对象。...,以供外部调用,这才是真正意义上封装 print("这个学校现在是%s"%self....delattr(s1,'number') print(getattr(s1,'number',"没有这个属性")) s1.add() delattr(s1,'add') s1.add() """ 三.为什么要用反射...从上面我们可以知道,通过反射四个函数可以操作类中数据属性和函数属性,这样,类外部可以查看、调用类属性,当有需要时候,我们可以在在不影响原类基础上快速完成自己想要工作。...此时,我们就可以使使用反射函数来处理该部分代码,如下图所示: ?

41720

Python反射介绍

反射是指在程序运行时,可以动态地获取对象类型信息、属性和方法等信息,并可以对这些信息进行操作一种机制。在Python中,反射是通过一组内置函数和语句来实现。...你可以使用以下四个内置函数来实现Python反射:getattr、setattr、hasattr和delattr。...setattr(object, name, value):将对象指定名称属性设置为value。 hasattr(object, name):如果对象具有名称为name属性或方法,则返回True。..."sex")) # 输出:False # 使用delattr删除属性 delattr(p1, "age") print(hasattr(p1, "age")) # 输出:False # 利用反射添加一个函数...My name is 小博测试成长之路 注意:types.MethodType() 是 Python 标准库 types 模块中一个函数,用于将函数绑定到一个特定对象上,从而创建一个方法。

20320

Python-----反射

self.name) p = Person("hexingcong") choice = input(">>>:").strip() # 运行时,直接输入eat,无法运行,因为choice输入是字符串格式...可以判断Person类中有没有choice这个方法,输入eat,控制台会输出True # 输入talk,控制台会输出False # delattr(p, choice)是用来删除对象方法.../属性 func = getattr(p, choice) # getattr(p,choice)得到类中方法, # 一般为其定义一个变量,因为eat这个方法中可能会含有参数然后通过变量来调用...func("apple") # 如果Person类中eat方法含有参数, 即def eat(self,food), # 此处func(food)中就可以了加一个参数food,...字符串方法/属性 2.getattr(obj,name_str) 根据字符串来获取obj对象里对应方法内存地址 3.setattr(obj,name_str,v) is equivalent

29710

Python 反射-isinstance

用到 isinstance(对象,类)  -------------------  判断一个对象是否是一个类实例 issubclass(子类,父类)  ----------------  判断一个类是否是一个类子类...(对象,属性,值)  ------------------  属性赋值(设置值,修改值,新增值) delattr(删除属性)  --------------------  删除属性操作 __str_..._  ------------------------------------  在对象被打印时自动触发,可以用来定义对象被打印时输出信息(必须返回一个字符串类型值) __del__  ------...7 8 9 obj = Foo() 10 print(issubclass(Foo, Bar)) >>>True 11 print(isinstance(obj, Foo)) >>>True 反射例子...') 19 20 21 obj = Ftp() 22 obj.run() __str__例子 在对象被打印时自动触发,可以用来定义对象被打印时输出信息(注意: 必须返回一个字符串类型值) 1

37940

Python基础:反射

反射就是根据提供字符串,匹配对象(类、模块等)里面的方法。达到动态调用目的。 主要有四个成员。... 获取成员、检查成员、设置成员、删除成员 语法: getattr(对象,字符串) setattr(对象,字符串,val) hasattr(对象,字符串) delattr(对象,字符串) '''一个简单例子...method = input('input method name:').strip() if hasattr(Symbol,method):                    # 判断是否存在输入方法名...下面是使用__import__导入模块例子: 相同目录导入 import  commons __import__('commons') 多层目录导入 from list.text import commons...__import__(' list.text.commons',fromlist=True) #如果不加上fromlist=True,只会导入list目录 而在使用时候也可以动态输入模块名!

28710

Python反射

参考链接: Python反射 反射  运行时,区别于翻译时,指的是程序被加载到内存中执行时候。 反射,reflection,指的是运行时获取类型定义信息。...一个对象能够在运行时,像照镜子一样,反射出其类型信息。简单说,在Python中,能够通过一个对象,找出其type、class、attribute或method能力,称为反射或自省。...具有反射能力函数有type(),isinstance(),callable().dir().getattr()等  反射相关函数和用法  class Point:     def __init__(...__dir__()))  上例通过属性字典__dict__来访问对象属性,本质上就是利用反射能力,但是上面的例子中,访问方式不优雅,Python提供了内置函数  内建函数意义getattr(object...__dict__) 反射相关魔术方法  getattr()、setattr()、delattr()这三个魔术方法。

85000

简单谈谈python反射机制

对编程语言比较熟悉朋友,应该知道“反射”这个机制。Python作为一门动态语言,当然不会缺少这一重要功能。然而,在网络上却很少见到有详细或者深刻剖析论文。...下面结合一个web路由实例来阐述python反射机制使用场景和核心本质。 一、前言 def f1(): print("f1是这个函数名字!")...这就是python反射,它核心本质其实就是利用字符串形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串事件驱动!   这段话,不一定准确,但大概就是这么个意思。...python四个重要内置函数:getattr、hasattr、delattr和setattr较为全面的实现了基于字符串反射机制。他们都是对内存内模块进行操作,并不会对源文件进行修改。...刚才我们分析完了基于字符串反射,实现了动态函数调用功能,我们不禁会想那么能不能动态导入模块呢?这完全是可以!   python提供了一个特殊方法:__import__(字符串参数)。

1.6K50
领券