Python 之 类的反射

类的反射作用

当一个类中,带有多个方法时,要求用户输入方法名,并调用相应函数,此时就可使用类的反射方法,来快速调用相应函数,而不再需要使用多个IF判断条件语句。

类的反射方法

  1. hasattr(obj,name_str) 判断一个对象OBJ里是否有对应的name_str字符串的方法
  2. getattr(obj,name_str) 根据字符串去获取obj对象里的对应方法的内存地址
  3. setattr(obj,'y',z) 相当于 obj.y = 'v'
  4. delattr(obj,name_str) 删除一个对象

代码

#Author Kang

class Dog(object):

    def __init__(self,name):
        self.Name = name

    def eat(self):
        print("%s is eatting...."%(self.Name))

    def talk(self):
        print("%s is talking...."%self.Name)

    def sleep(self):
        print("%s is sleep...."%self.Name)

    def walk(self):
        print("%s is walking..."%self.Name)

    def alert(self):
        print("此方法不存在")

d1 = Dog("二哈")
choice = input("请输入你想要的:>>")
if hasattr(Dog,choice):             #判断Dog类是否有此方法
    func = getattr(d1,choice)       #调用该方法(返回值为函数地址)
    func()                          #运行该函数,并可传值
else:
    print("你输入的方法有误!!!!")

结果:
请输入你想要的:>>eat
二哈 is eatting....

请输入你想要的:>>eat
二哈 is eatting....

转载于:https://blog.51cto.com/12965094/2352988

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值