python一个函数调用另一个函数里面的值,python getattr和getattribute
getattr的基本概念
Getattr提供了一种从方法名获取方法的方法。Python的公式描述如下。
用于模块的
(参见
目标
因为,
名字
[,
系统默认值
]。
) )
returnthevalueofthenamedattributeofobject . name mustbeastring . ifthestringisthenameoftheobject s attributes、theresultisthevalueofthatattribute.for .例如,getattr(x, foobar )is equivalenttox . foobar . ifthenamedattributedoed
应该注意的是,
名称必须是字符串。
用下面的例子来说明。
使用getattr。
classgetattrtest(对象) :
def __init__(self,nm):
self.name=nm
efdisplay(自我) :
返回自己的名字
gat=getattrtest(John ).
打印机(gat,名称,默认))。
打印机(gat,年龄,默认))。
打印机(gat,显示,默认))。
打印机(gat,显示,默认))))))。
输出:
约翰
系统默认值
约翰
如果有name属性,则打印name的值。类没有年龄属性,所以打印默认值。
getattr在软件包中的应用
在Python2.2之前,不允许从标准类型派生。所以包装也能达到同样的效果。如下图。
Classwrap(对象):
def __init__(self,obj):
自我。__data=obj
默认(自己):
回归自我。_ _数据
def __repr__(self):
回归自我。_ _数据
def __str__(self):
返回字符串(self。_ _ data))。
def __getattr__(self,attr):
返回getattr (self。_ _ data,attr)。
wrappedcomplex=wrapme(3.5 ) 4.2j)).
打印快速合成
print(wrapped complex . real))。
Print (wrapped complex.imag))。
print(wrapped complex . conjugate()
print(wrapped complex . get))
输出:
(3.5 ) 4.2j).
3.5
4.2
(3.5-4.2j).
(3.5 ) 4.2j).
调用print (wrapped complex:_ _ repr _ _))方法。
WrappedComplex.real:当前类没有real的摘要。这种实现的主要方法是在实例或字典中搜索real来修改属性。如果找不到,调用__getattr__方法,然后调用该方法中的getattr方法,获取实例的实方法(3.5 4.2j)。实=3.5。
其他属性和方法调用也是如此。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。