-
>>> class test(object):
-
def __init__(self):
-
print ("test init")
-
def __del__(self):
-
print ("test del")
-
-
-
>>> T=test()
-
test init
-
>>> del T
-
test del
- >>>
3.使用super函数:super函数只能在新式类中起作用。所以需要在超类上方使用__metaclass__=type这句代码来声明此超类是一个新式类(使用新式类的好处是可以和旧式类兼容,且新式类拥有旧式类没有的一些方法,如__init__等等)。然后在子类的构造方法中使用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这样的装饰器在方法上进行修饰。
6.为了在访问特性的时候可以执行代码,必须使用一些魔法方法,如下:__getattribute__(self,name):当特性name被访问时自动被调用(只能在新式类中使用)。__getattr__(self,name):当特性name被访问且对象没有相应的特性时被自动调用。__setattr__(self,name,value):当试图给特性name赋值时会被自动调用。__delattr__(self,name):当试图删除特性name时被自动调用。
7.迭代器:__iter__方法返回一个迭代器,这个迭代器具有next方法。一个实现了__iter__方法的对象是可迭代的,一个实现了next方法的对象则是迭代器。
8.生成器:任何包含yield语句的函数称为生成器。它的行为和普通的函数有很大的差别。它不是像return那样返回值,而是每次产生多个值。每次产生一个值(使用yield),函数就会被挂起:即函数停在那点等待被激活。函数被激活后就从停止的那点开始执行.