python insert()方法,Python alert
python中的内置函数getattr()介绍及示例
其实getattr()最大的作用就是实现反射机制。这意味着您可以从字符串中获取方法实例。这样,您可以将该类可能调用的方法放入性能分析中,并根据需要动态加载它们。
在python的官方文档中,对getattr()的描述如下:
Getattr(object,name[),efault](returnthevalueofthenamedattributeofobject . namesmustbeastring . if thestringisthenameofeoftheobject 的属性为结果样本,getattr(x,Foobar )为isequivalentTox。foobar。如果提供了NAMEDATABLE DOED默认值,则返回,否则,如果“name”是对象属性的名称,则它将返回相应属性的值。
-coding 3360 utf-8- _ author _ _= dydfbx classattrtest(object)3360 def _ _ init _)self 3360 sef equalstoself . nameprintgetattr(self,Name) defattribute1) self,para 1)3360 print attribute 1 called and para 1 is passessdinasaparameter deftryGetAttr(self)3360 fun=getattr)self,attribute 1 (print type(fun)fun))if _ Name _=.name test . trygetattr 0(print attribute 1 indirectcalledbyfun()test . trygetattr
Getattr(self,Name’)等于self。nameddfbxdyfbxattribute 1 is indirectlycalledbyfun(类型‘实例方法’attribute 1 calledandcrownispasssedinate如定义,called attribute 1 calledtomatoipaatachis AparameterProcess finishedwithexitcode 0中的第一个函数tryattribute0()非常好理解,第二个函数tryattribute1)有点混乱。其实原理并不复杂。你可以看到fun的类型是一个实例方法。现在,你可以认为getattr()函数的返回值是一个指针,指针被替换到接收它的变量中。以后调用这个变量就等于调用了变量指向的函数。
我知道这是怎么回事。getattr的作用是什么?
你知道java和c#的反射吗?反射的一个重要作用就是通过延迟加载来解耦,让系统更有效的运行。作为一门动态语言,python在这方面显然更强大。
Getattr(这是一个实现python反射的块,和其他方法(比如setattr)、dir等结合起来可以有很多有趣的东西。).
我们来看下一个场景。
1.您需要动态地将其他类中的方法添加到一个类中。
#假设A类有如下方法:defaddnewAttributesFromOther Class(self Class _ name(3360 func _ names=dir)Class _ name)for func _ nameinfunc _ name elf。_ _ setattr _ _ (func _ name,new_func))只需要以下内容:
A=A(B=B))A . AddNewAttributesFromOther类)B)这样,A可以调用B的“非私有”方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。