python一个函数调用另一个函数里面的值,python getattr和getattribute

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: