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