补充:反射

反射是基于面向对象,类的封装和对象创建,可以实现对象的属性或者方法进行增删改查。

反射添加或者覆盖

setattr(对象,方法名字,函数功能)

class A:
	def a(self):
		print("a实例方法")
	
	def b(self):
		print("b实例方法")

	def c(self):
		print("c实例方法")

def func():
	print("func函数")

x=A()
#给x对象添加新的方法。前提必须有该方法或者函数的引用
setattr(x,'e',print)  #setattr(对象,方法名字,函数功能)
x.e('e')
setattr(x,'w',func) #对象,方法名字,函数功能
x.w()
#覆盖x对象原来的方法
setattr(x,'a',input) #对象,方法名字,函数功能
y=x.a("请输入")
print(y)

反射删除

delattr(对象名,"实例属性名/类属性名/实例方法/类方法")

class A:
	y_cls=1
	def __init__(self):
		self.y=2

	def a(self):
		print("a实例方法")

	def b(self):
		print("b实例方法")

	@classmethod
	def c(self):
		print("c实例方法")

def func():
	print("func函数")

x=A()
print(x.y)
delattr(x,"y") #delattr(对象名,"实例属性名/类属性名/实例方法/类方法")
print(x.y)

反射查询

class A:
	y_cls=1
	def __init__(self):
		self.y=2

	def a(self):
		print("a实例方法")

	def b(self):
		print("b实例方法")

	@classmethod
	def c(self):
		print("c实例方法")

def func():
	print("func函数")

x=A()
print(hasattr(x,"y_cls")) #hasattr(对象名,"实例属性名/类属性名/实例方法/类方法")
print(hasattr(x,"y"))
print(hasattr(x,"a"))

反射读取使用

class A:
	y_cls=1
	def __init__(self):
		self.y=2

	def a(self):
		print("a实例方法")

	def b(self):
		print("b实例方法")

	@classmethod
	def c(self):
		print("c实例方法")

def func():
	print("func函数")

x=A()
#可以使用getattr()反射把对象的属性或者方法传递给变量进行使用
z=getattr(x,"y_cls") #getattr(对象名,"属性或者方法名")
print(z)
zz=getattr(x,"a") 
zz()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值