Python 关于反射和类的特殊成员方法


Posted in Python onSeptember 14, 2017

反射

反射即想到4个内置函数分别为:getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员

class Dog(object):
  def __init__(self,name):
    self.name = name
  def eat(self):
    print("%s is eating..."%self.name)
def run():
  print("runing ....")
d = Dog("lucy")
choise=input("请输入要调用的方法:")
if hasattr(d,choise):#判断一个对象是否有对应的字符串方法
  func=getattr(d,choise)#根据字符串去获取对象里相应的方法或属性的内存地址对象
  func()
else:
  setattr(d,choise,run)#setattr(obj,y,fun)相当于obj.y=fun,fun可以是属性或者方法
  v=getattr(d,choise)
  print(v)

dir([obj]):

调用这个方法将返回包含obj大多数属性名的列表(会有一些特殊的属性不包含在内)。obj的默认值是当前的模块对象。

hasattr(obj, attr):

这个方法用于检查obj是否有一个名为attr的值的属性,返回一个布尔值。

getattr(obj, attr):

调用这个方法将返回obj中名为attr值的属性的值,例如如果attr为'bar',则返回obj.bar。

setattr(obj, attr, val):

调用这个方法将给obj的名为attr的值的属性赋值为val。例如如果attr为'bar',则相当于obj.bar = val。

 __doc__ 查看尖的描述信息
__module__表示当前操作的对象所在的模块
__class__表示当前操作的对象所属的类
__init__构造方法 通过类创建对象自动执行
__del__析构方法,当前对象在内存中被释放自动斩妖执行
__call__对象后面加括号触发执行
__dict__查看类或对象中的成员
__str__如果一个类中定义了此方法,那么打印此类对象时,输出此方法的返回值
__getitem__当类中定义了一个字典的属性成员,可以获取
__setitem__设置修改类中字典的数据
__delitem__删除 类中字典的数据
__metalass__其用来表示该类由 谁 来实例化创建
__new__触发 __init__创建实例

from lib.ss import a
#示例类 dog
class doges(object):
  """类的描述信息"""
  def __init__(self,name,food):
    self.name=name
    self.food=food
    self.data={}#定义一个类的字典
  def __call__(self, *args, **kwargs):#对象后面加括号解执行
    print(*args)
  def __str__(self):#默认输出返回值
    return self.name
  def __getitem__(self):#可以获取类的的字典
    return self.data
  def __setitem__(self, key, value):#可以设置类的的字典
    self.data[key]=value
  def __delitem__(self, key):#可以删除类的字典的内容
    del self.data[key]
dog=doges('xxx','iii')
print(dog.__doc__)
b=a()
print(b.__module__)#操作的对象的那个模块
print(dog.__class__)#当前操作的对象的类是什么
dog('111')#
print(doges.__dict__)#查看类或对象的成员 类只打印类的成员不打印对象的成员
print(dog.__dict__)#查看类或对象的成员 对象只打印对象的成员不打印类的成员
print(dog)#打印 __str__的返回值
print(dog.__str__())#打印返回值
dog['1']=1000#触发.__setitem__()
dog['2']=1000#触发.__setitem__()
print(dog.__getitem__())
print(dog.__delitem__('1'))#删除类中字典
print(dog.__getitem__())
#设置类的特殊方法
def func(self):
  print('hello word%s'%self.name)
  print()
def __init__(self,name,age):
  self.name=name
  self.age=age
##type参数 1:类名 2.类的基类 3.类的成员,字典格式
CAT=type('CAT',(object,),{'func':func,'__init__':__init__})
cat=CAT('喵喵',3)
cat.func()
print(cat.name,cat.age)
Python 相关文章推荐
Python中的XML库4Suite Server的介绍
Apr 14 Python
Python中isnumeric()方法的使用简介
May 19 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
Python 函数list&read&seek详解
Aug 28 Python
利用Python代码实现一键抠背景功能
Dec 29 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
pytorch实现手写数字图片识别
May 20 Python
在Python中执行系统命令的方法示例详解
Sep 14 #Python
关于Python如何避免循环导入问题详解
Sep 14 #Python
Python实现随机选择元素功能
Sep 14 #Python
python自动化脚本安装指定版本python环境详解
Sep 14 #Python
python实现八大排序算法(2)
Sep 14 #Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 #Python
python实现八大排序算法(1)
Sep 14 #Python
You might like
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php笔记之:AOP的应用
2013/04/24 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
python中dir函数用法分析
2015/04/17 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
简单介绍Python中的struct模块
2015/04/28 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Django自定义用户认证示例详解
2018/03/14 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
关于对大人不礼貌的检讨书
2014/09/29 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
python基础之爬虫入门
2021/05/10 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP