前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-方法反射

Python-方法反射

作者头像
Yuou
发布2022-09-26 15:25:43
2320
发布2022-09-26 15:25:43
举报

什么是反射?

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

简而言之 :反射就是通过字符串的去操作对象中的属性

反射的方法

getattr() : 用于返回一个对象属性值。

hasattr(): 用于判断对象是否包含对应的属性

delattr(): 用于删除属性。

setattr(): 用于设置属性值,该属性不一定是存在的。

实例化对象

代码语言:javascript
复制
class Person():
	def __init__(self,name,age):
		self.name = name
		self.age = age
	def walk(self):
		print("%s is walking..."% self.name)
    
def talk(self):
	print("%s 调用成功" % self.name)
p = Person("Hopc",'22')

getattr()方法

代码语言:javascript
复制
a = getattr(p,"age")
print("getattr调用: ",a)
getattr调用:  22 # 此为打印结果

# 如果没有age这这个属性则会报错
AttributeError: 'Person' object has no attribute 'age'

hasattr()方法

代码语言:javascript
复制
if hasattr(p,"name2"): # 通过hasattr判断p实例中的name2属性
	print("successSecret")
else:
	print("None")

setattr方法

代码语言:javascript
复制
"static属性"
setattr(p,"sex","Famale")
print(p.sex)
Famale # 此为打印结果

"设置一个方法"
setattr(p,"talk",talk)
p.talk(p) # 需要再把p对象传入才能调用
Hopc 调用成功 # 此为打印结果

"对类直接进行绑定"
setattr(Person,"talks",talk)
p.talks()
Hopc is walking...

delattr方法

代码语言:javascript
复制
del p.age
p.age()
AttributeError: 'Person' object has no attribute 'age'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是反射?
  • 反射的方法
  • 实例化对象
    • getattr()方法
      • hasattr()方法
        • setattr方法
          • delattr方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档