python定义实例方法,python类的应用实例

  python定义实例方法,python类的应用实例

  遗产

  用大蟒继承是件好事。我不认为你必须告诉getattr黑客。如果你想要那些,请向下滚动。

  可以强制类词典引用其他对象。

  类矩形(对象) :

  def __init__(自身,宽度,高度) :

  自身宽度=宽度

  自我高度=高度

  默认区域(自身) :

  return self.width * self.height

  classcoloredrectangle(矩形) :

  def __init__(self,rect,color):

  自我__dict__=rect .__词典_ _

  自我颜色=颜色

  rect=rectangle (3,5)))))))))))))。

  crect=coloredrectangle(rect,color=blue )。

  打印宽度、高度、颜色

  #35蓝

  这两个引用同一个矩形对象。

  crect.width=10

  打印矩形宽度、矩形高度

  #10 5

  这是一个关于元编程的很好的演讲,标题是Python3,但很多也适用于蟒蛇皮.x:davidbeazleypython meta编程

  用于模块的黑客

  但是,如果由于某种原因,多个彩色矩形希望引用同一个基本矩形,它们将会相互冲突。

  eve=rectangle (3,5)))))))))))))。

  Kain=coloredrectangle(Eve,color=blue ))))))。

  Abel=coloredrectangle(Eve,color=red )。

  打印夏娃颜色、凯恩颜色、亚伯颜色

  #红色红色红色

  如果想要不同的"委派对象",则可以从基本矩形获取属性,但不会相互干扰。我必须向用于模块的黑客求助。这也很有趣:

  classcoloredrectangle(矩形) :

  def __init__(self,rect,color):

  self.rect=rect

  自我颜色=颜色

  def __getattr__(self,attr):

  returngetattr(self.rect,attr))。

  eve=rectangle (3,5)))))))))))))。

  这样可以避免干扰。

  Kain=coloredrectangle(Eve,color=blue ))))))。

  Abel=coloredrectangle(Eve,color=red )。

  打印凯恩颜色,亚伯颜色

  #蓝色红色

  关于__getattr__和__getattribute__:

  getattrandgetattributeisthat之间的关键差异是

  getattrisonlyinvokediftheattributewasn tfoundtheusaulways。这有利于实现fallbackformissingattributes,

  和可能是你想要的。07001

  __getattr__还可以部分更新代理,以便只处理缺少的属性。这可能会导致混乱。

  kain.width=10

  打印eve.area(、kain.area、abel.area)。

  # 15 50 15

  要避免这种情况,请执行以下操作:

  def __setattr__(self,attr,value):

  if attr==color :

  返回超级(彩色矩形,自身)。setattr(属性,值)).

  提出你最喜欢的例外

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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