hasattr,getattr,setattr和delattr

本文深入探讨了Python中的反射机制,包括如何使用hasattr、getattr、setattr和delattr等内置函数来检查、获取、设置和删除对象的属性及方法。通过一个具体的示例,展示了如何动态地为对象绑定新的方法。
摘要由CSDN通过智能技术生成
'''
反射
'''
def add(self):
    print("我是新绑定的方法!")

class People(object):
    skin = "yellow"
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say(self, content):
        print("说了[%s]" % content)


choice = input(">>").strip()

# if choice in People.__dict__:
#     print("有此方法")
# print(People.__dict__)   #打印所有类属性和方法

# p = People("小白", "26")
# print(p.__dict__)          #打印所有的实例属性
p = People("小白", "26")

if hasattr(p, choice):
    #如果是方法,直接执行
    try:
        func = getattr(p, choice)
        func("打工不可能打工的!")  
    #输入是属性,则会报TypeError,则直接打印得到属性值
    except TypeError as e:
        print(func)
else:
    setattr(p, choice, add)
    func = getattr(p, choice)
    func(p)
#delattr(p, choice)     #删除属性和方法

  

转载于:https://www.cnblogs.com/ericbai/p/8964476.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值