python总结笔记,Python讲解

  python总结笔记,Python讲解

  魔法,属性

  -

  准备工作/即将开始工作

  为了确保该类是一个新类,应该在模块的开头放置_metaclass_=type。

  类NewType(对象):

  mor_code_here

  类别旧类型:

  Mor _ code _这里这两个类中,NewType是新类,OldType属于旧类。如果之前添加了_metaclass_=type,那么这两个类都属于新类。

  施工方法

  施工方法与其方法不同。创建对象时,将立即调用构造方法。创建一个python构造方法是一个简单的答案,只需要将init方法从简单的init方法转换为神奇版的_init_ method即可。

  FooBar类:

  def __init__(self):

  self.somevar=42

  f=FooBar()

  萨默瓦尔

  四十二个

  重写一个通用方法

  每个类可能有一个或多个超类(super class),它们从超类继承行为方法。

  A类:

  def hello(自己):

  打印“你好”。我是一个。

  B(A)类:

  及格

  a=A()

  b=B()

  你好

  你好。我是一个。

  因为B类没有hello方法,而B类继承了A类,所以会调用A类的hello方法。

  在子类中添加函数最基本的方法是添加方法。但是您也可以覆盖一些超类方法来定制继承的行为。如下所示:

  A类:

  def hello(自己):

  打印“你好”。我是一个。

  B(A)类:

  def hello(自己):

  打印“你好”。我是B

  b=B()

  你好

  你好。我是B

  特殊和施工方法

  重写是继承机制的重要组成部分,尤其是对于构造方法。请看下面的例子:

  类别鸟:

  def __init__(self):

  自我饥渴=真

  定义吃(自己):

  如果自己饿了:

  打印“Aaaah .”

  自我饥饿=错误

  否则:

  打印“不,谢谢!”

  b=鸟()

  b .吃()

  啊啊.

  b .吃()

  不了,谢谢!

  这个类定义了鸟有吃东西的能力,吃了一次就不会再饿了。从上面的执行结果可以明显看出。

  然后用SongBird类继承Bird类,给它添加一个唱歌的方法:

  类别鸟:

  def __init__(self):

  自我饥渴=真

  定义吃(自己):

  如果自己饿了:

  打印“Aaaah .”

  自我饥饿=错误

  否则:

  打印“不,谢谢!”

  鸣禽类(鸟):

  def __init__(self):

  self.sound=嘎嘎!

  定义歌唱(自我):

  打印自我声音

  s=鸣鸟()

  新声()

  嘎嘎!

  s .吃()

  回溯(最近一次呼叫):

  模块中文件“pyshell#26”的第1行

  s .吃()

  文件 C:/Python27/bird ,第6行,在eat中

  如果自己饿了:

  attribute error:“SongBird”对象没有属性“hungry”

  这个异常清楚地说明了错误:SongBird没有饥饿特性。原因是这样的:在SongBird中,构造方法被重写,但是新的构造方法没有任何关于初始化hungry特性的代码。为了达到预期的效果,SongBird的构造方法必须调用其超类Bird的构造方法来保证基本初始化。

  两种实现方式:

  1、调用未绑定超类构造方法

  类别鸟:

  def __init__(self):

  自我饥渴=真

  定义吃(自己):

  如果自己饿了:

  打印“Aaaah .”

  自我饥饿=错误

  否则:

  打印“不,谢谢!”

  鸣禽类(鸟):

  def __init__(self):

  小鸟。__init__(self)

  self.sound=嘎嘎!

  定义歌唱(自我):

  打印自我声音

  s=鸣鸟()

  新声()

  嘎嘎!

  s .吃()

  啊啊.

  s .吃()

  不了,谢谢!

  加了一行代码鸟。__init__(self)到SongBird类。当调用实例的方法时,该方法的self参数会自动绑定到实例(这称为绑定方法)。但是如果你直接调用类的方法,那么没有实例会被绑定。这样,你就可以自由地提供所需的self参数(这样的方法称为无绑定方法)。

  通过提供当前实例作为unbound方法的self参数,SongBird可以使用其超类构造方法的所有实现,也就是说可以设置hungry属性。

  第二,使用超级功能

  __metaclass__=type #表示一个新类。

  类别鸟:

  def __init__(self):

  自我饥渴=真

  定义吃(自己):

  如果自己饿了:

  打印“Aaaah .”

  自我饥饿=错误

  否则:

  打印“不,谢谢!”

  鸣禽类(鸟):

  def __init__(self):

  超级(鸣鸟,自我)。__init__()

  self.sound=嘎嘎!

  定义歌唱(自我):

  打印自我声音

  新声()

  嘎嘎!

  s .吃()

  啊啊.

  s .吃()

  不了,谢谢!

  超级函数只能在新类中使用。当前的类和对象可以作为超函数的参数,任何调用函数返回的对象的方法都是调用超类的方法,而不是当前类的方法。然后可以直接用super (SongBird,self)代替SongBird的构造方法中的Bird。

  属性

  访问器是一个简单的方法,它可以使用getHeight和setHeight这样的名字来获取或重新绑定一些特性。如果在访问一个给定的特性时必须采取一些动作,像这样封装状态变量是很重要的。如下所示:

  类别矩形:

  def __init__(self):

  self.width=0

  self.height=0

  定义集合大小(自身,大小):

  self.width,self.height=size

  def getSize(self):

  返回自身宽度,自身高度

  r=矩形()

  r .宽度=10

  高度=5

  r.getSize()

  (10, 5)

  r.setSize((150,100))

  r .宽度

  150

  在上面的示例中,getSize和setSize方法是一个名为Size的虚构属性的访问器方法,该属性是一个由width和height组成的元组。

  属性函数

  属性函数的使用很简单。如果已经编写了类似上一节中Rectangle的类,只需添加一行代码:

  __元类__=类型

  类别矩形:

  def __int__(self):

  self.width=0

  self.height=0

  定义集合大小(自身,大小):

  self.width,self.height=size

  def getSize(self):

  返回自身宽度,自身高度

  size=property(getSize,setSize)

  r=矩形()

  r .宽度=10

  高度=5

  r.size

  (10, 5)

  r.size=150,100

  r .宽度

  150

  在这个新版本的Retangle中,property函数创建了一个属性,其中取值函数作为参数(先取值,再赋值),这个属性被命名为size。这样就不用担心怎么实施了。你可以用同样的方式处理宽度、高度和尺寸。

  否则将追究法律责任。

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

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