魔法方法
在python中,所有以“__"双下划线包起来的方法,都统称为魔法方法,例如类的初始化方法init,python中所有的魔法方法均在官方文档中有相应描述,但是由于官方的描述比较混乱而且组织比较松散,很难找到一个例子。
每个pythoner都知道一个最基本的魔法方法,init.通过此方法我们可以定义一个对象的初始化操作。然而,当调用x = SomeClass()的时候,init并不是第一个被调用的方法。实际上,还有一个叫做new的方法,两个共同构成了“构造函数”
new是用来创建并返回这个类的实例,而,init只是将传入的参数来初始化该实例。
在生命对象周期调用结束时,del方法将会被调用,可以将del理解为“构析函数”。
常见的魔法属性有str(),repr(),gt(),lt(),ge(),_le是(),ne(),eq(),add(),sub(),mul(),truediv(),floordiv().
类型中的属性
在python中,定义类是通过class关键字,class后面紧跟着是类名,鸡student类,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类集成下来的。通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
由于类可以起到模板作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去,通常定义一个特殊的init方法,在创建实例的时候,就把name,score等属性绑定上去。和普通函数相比,在类中定义的对象函数、静态方法、类方法只有一点不同,就是第一个参数永远是实例变量self,并且,调用时不用传递该参数。
python的新式类是2.2版本引进来的,之前的类叫做经典类或旧类。python2.x中如果没有一个类继承于一个基类或者继承自object,则该类为新式类,没有继承的为经典类,python3.x中则全部为新式类。新式类被赋予了很多新的特性,并改变了以往经典类的一些内容
方法
在python中类有三种方法,即静态方法,类方法和实例方法。对于实例方法,在类里每次定义实例方法的时候都需要指定实例,这是因为实例方法的调用离不开实例,我们必须给函数传递一个实例。类方法每次定义的时候需要指定类,调用时和实例方法类似需要指定一个类。静态方法和普通方法一样,只不过在调用的时候需要使用实类或者实例,之所以需要静态方法, 是因为有时候需要将一组逻辑上相关的函数放在一个类里,便于组织代码结构。一般如果一个方法不需要用到self,那么它就适合用作静态方法。成员方法属于普通的类型方法,必须通过def方法名称(self)进行调用。 类方法属于当前类型的方法,可以通过类型、该类型的对象进行调用@classmethod,def 类方法(cls, ..),类方法使用较少特殊需求在方法中要对当前类型进行操作,考虑使用类方法。
静态方法可以被所有的对象、包括类型名称,进行调用参数声明和普通函数没有任何区别!@staticmethod,def 静态方法(..)。
异常处理
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。 try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
网友评论