简介


今天看项目代码,突然发现python里一个有趣的函数getattr,这个函数真的很有意思,怎么有意思呢,举个栗子,我这有个类

class A(object):
    def print_name(self,name):
        print name
    
    def print_age(self,age):
        print age


然后我想实现这样的功能,根据用户的一个输入,去调用不同的方法,通常咱们可以这样做,if条件判断,对吧,比如用户输入'print_name',那我们就调print_name方法,输print_age就调print_age方法,但是这样未免太不灵活了,我们期望是根据用户的输入,直接定位到那个方法,此时duang~duang~duang~,getattr闪亮登场,有了getattr以后呢,就可以这样写

#用户输入
fun_name = 'print_name'
a = A()
fun = getattr(a,fun_name)
fun('xxx')


神不神奇?
当然,除了可以获取一个对象实例的方法外,还可以获取一个模块(文件)里的变量或者函数。

应用场景


当我们需要写个带参数的命令行程序时用getattr就可以很方便的处理用户的输入了,不用一大堆if条件了

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐