当前位置:编程学习 > 网站相关 >>

python学习第九章

1.构造方法:只要把init方法的名字从简单的init修改为__init__即可:def __init__(self):。
2.子类调用超类的构造方法:在自己的构造方法内添加:SuperClass.__init__(self)。在调用一个实例的方法时,该方法的self参数会被自动绑定到实例上。但如果直接调用类的方法(比如上面的那句代码),那么就没有实例会被绑定。这样就可以自由地提供需要的self参数。这样的方法称为未绑定方法。通过将当前的实例作为self参数提供给未绑定方法,子类就能够使用其超类构造方法的所有实现。
3.使用super函数:super函数只能在新式类中起作用。所以需要在超类使用__metaclass__=type这句代码来声明此超类是一个新式类。然后在子类的构造方法中使用super(SonClass,self).__init__()就可以调用超类的构造方法了(SonClass是子类)。
4.property函数:在新式类中应该使用property函数而不是访问器方法(get,set方法)。property函数可以用0,1,2,3或者4个参数来调用。如果没有参数,产生的属性既不可读也不可写。如果只是用一个参数调用(即只有一个取值方法),产生的属性是只读的,第三个参数(可选)是一个用于删除特性的方法。第四个参数是一个文档字符串。property的4个参数分别被叫做fget,fset,fdel和doc。
5.静态方法和类成员方法:静态方法和类成员方法分别在创建时分别被装入staticmethod类型和classmethod类型的对象中。静态方法的定义没有self参数,且能够被类本身直接调用。类方法在定义时需要名为cls的类似于self的参数,类成员方法可以直接用类的具体对象调用。cls参数是自动被绑定到类的。可以使用@staticmethod和@classmethod这样的装饰器在方法上进行修饰,相当于java里的注解。
6.为了在访问特性的时候可以执行代码,必须使用一些魔法方法,如下:__getattribute__(self,name):当特性name被访问时自动被调用(只能在新式类中使用)。__getattr__(self,name):当特性name被访问且对象没有相应的特性时被自动调用。__setattr__(self,name,value):当试图给特性name赋值时会被自动调用。__delattr__(self,name):当试图删除特性name时被自动调用。
7.迭代器:__iter__方法返回一个迭代器,这个迭代器具有next方法(和java里的Iterator一样)。一个实现了__iter__方法的对象是可迭代的,一个实现了next方法的对象则是迭代器。
8.生成器:任何包含yield语句的函数称为生成器。它的行为和普通的函数有很大的差别。它不是像return那样返回值,而是每次产生多个值。每次产生一个值(使用yield),函数就会被冻结:即函数停在那点等待被激活。函数被激活后就从停止的那点开始执行。
作者:uohzoaix
补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,