Python反射

反射:通过字符串的形式进行操作对象的属性方法

1、对象反射

1、getattr 获取指定的对象属性以及方法

变量名 = getattr(对象 , '对象属性' ,设置默认值) 
# 默认值:当在对象中查找不到对应的属性是返回的内容 , 如果没有设置的话 , 将会返回没有该属性的报错

2、setattr 设置对象属性

setattr(对象 , '对象属性' , 值)

3、hasattr 判断对象是否有对应的属性以及方法

变量名 = hasattr(对象 , '对象属性')
# 该方法返回的是bool类型

4、delattr 删除对象的属性

delattr(对象 , '对象属性')

代码:

class Foo:
​
    def __init__(self , name , age):
        self.name = name
        self.age = age
​
    def say_hi(self):
        print(f'hi 靓仔/靓女:{self.name}')
​
# getattr 获取指定的对象属性
# 变量名 = getattr(对象 , '对象属性' ,设置默认值)
xy = Foo('星奕' , 24)
​
n = getattr(xy , 'name')
print(n)
h = getattr(xy , 'say_hi')
h()
f = getattr(xy , 'height' , '没有你要看的')
print(f)
​
# 2、setattr 设置对象属性
# setattr(对象 , '对象属性' , 值)
print(xy.age)
setattr(xy , 'age' , 25)
print(xy.age)
​
# 3、hasattr 判断对象是否有对应的属性以及方法
# d = hasattr(对象 , '对象属性')
d = hasattr(xy , 'name')
print(d)
a = hasattr(xy , 'height')
print(a)
​
# 4、delattr 删除对象的属性
delattr(xy , 'age')
# print(ac.age)

2、反射的使用

class User:
    def login(self):
        print('这个是登录操作')
​
    def register(self):
        print('欢迎来注册')
​
    def speak(self):
        print('来唠嗑呀!')
​
xy = User()
# 没有使用对象反射的情况
choose = input('请输入你要操作的功能:')
if choose == 'login':
    xy.login()
elif choose == 'register':
    xy.register()
elif choose == 'speak':
    xy.speak()
else:
    print('输入有误')

使用反射

class User:
    def login(self):
        print('这个是登录操作')
​
    def register(self):
        print('欢迎来注册')
​
    def speak(self):
        print('来唠嗑呀!')
​
xy = User()
​
# 使用反射
choose = input('请输入你要操作的功能:')
if hasattr(xy , choose):
    fun = getattr(xy , choose)
    fun()
else:
    print('输入有误')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值