python反射的简单应用

class Cartoon(object):

    def __init__(self):
        self.name = "哪吒"

    def func(self):
        return "魔童降世"


# 创建要操作的类的对象
obj = Cartoon()

# 1. 查看属性
print(obj.name)

# 2. 判断类中是否有该成员,当找到第二个参数时返回true,否则返回false
have_1 = hasattr(obj, "func")
have_2 = hasattr(obj, "drink")
print(have_1)
print(have_2)

# 3. 获取对象的值.
res_name = getattr(obj, "name")  # 返回属实际性值. 如果没有此属性,程序报异常
# res_wrong1 = getattr(obj,"job")  # 如果获取没有的属性或方法,会报错: AttributeError: 'Cartoon' object has no attribute 'job'
res_method = getattr(obj, "func")  # 返回方法的内存地址
r = res_method()  # 执行方法
print(res_method)
print(res_name)
print(r)

# 4. 设置属性值
res = setattr(obj, "name", "三太子")
print(obj.name)

# 5. 添加属性和值. 当设置的属性不存在时,会自动添加到属性和对应值到对象中
setattr(obj, "age", "3")  # 相当于 obj.age = 3
print("name={0},age={1}".format(obj.name, obj.age))

# 6. 删除对象的属性
delattr(obj, "age")

print(dir(obj))  # 查看大部分属性和方法.
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__',
# '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
# 'func', 'name']  #最后展示的是方法名和属性名

 

转载于:https://www.cnblogs.com/0xiasandu/p/11375980.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值