博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象进阶
阅读量:4695 次
发布时间:2019-06-09

本文共 969 字,大约阅读时间需要 3 分钟。

面向对象进阶

一、反射

1、定义:

  反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。

2、python中的反射

通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)

3、可以实现自省的函数:hasattr、getattr、setattr、delattr

①举例

1 class Foo: 2     f = '类的静态变量' 3     def __init__(self,name,age): 4         self.name=name 5         self.age=age 6  7     def say_hi(self): 8         print('hi,%s'%self.name) 9 10 obj=Foo('egon',73)11 12 #检测是否含有某属性13 print(hasattr(obj,'name'))14 print(hasattr(obj,'say_hi'))15 16 #获取属性17 n=getattr(obj,'name')18 print(n)19 func=getattr(obj,'say_hi')20 func()21 22 print(getattr(obj,'aaaaaaaa','不存在啊')) #报错23 24 #设置属性25 setattr(obj,'sb',True)26 setattr(obj,'show_name',lambda self:self.name+'sb')27 print(obj.__dict__)28 print(obj.show_name(obj))29 30 #删除属性31 delattr(obj,'age')32 delattr(obj,'show_name')33 delattr(obj,'show_name111')#不存在,则报错34 35 print(obj.__dict__)

 

转载于:https://www.cnblogs.com/NeroCl/p/8326131.html

你可能感兴趣的文章
【python练习】ATM&购物商城程序
查看>>
nginx 日志问题(\x22)
查看>>
装饰器、迭代器、生成器
查看>>
类对象作为类成员
查看>>
面向对象和面向过程的区别及优劣对比详解
查看>>
const与指针
查看>>
thsi指针的一些用法及作用
查看>>
c++友元
查看>>
c++运算符重载
查看>>
一元运算符重载
查看>>
Windows 远程栈溢出挖掘
查看>>
(网页)the server responded with a status of 403 (Forbidden)
查看>>
葡萄城报表介绍:Java 报表
查看>>
android 通知消息一
查看>>
UNET学习笔记2 - 高级API(HLAPI)
查看>>
腾讯编程马拉松2012第一题
查看>>
Day18
查看>>
Web Service数据源
查看>>
php.ini详解(转)
查看>>
[转]基于Python的接口测试框架
查看>>