所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。python
好比,汽车是一个类,汽车的地盘,轮胎也能够抽象为类,将其定义到汽车的类中,则造成内部类,更好的描述汽车类,由于底盘、轮胎是汽车的一部分算法
建立内部类的方法和建立类的方法很类似函数
方法1:直接使用外部类调用内部类code
object_name = outclass_name.inclass_name()对象
class People(object): class Chinese(object): name = "I'm a Chinese" me = People.Chinese() print me.name ---------- I'm a Chinese
方法2:先对外部类进行实例化,而后再实例化内部类继承
out_name = outclass_name() in_name = out_name.incalss_name() in_name.method()资源
class People(object): class Chinese(object): name = "I'm a Chinese" me = People.Chinese() print People.Chinese.name ---------- I'm a Chinese
str(self)作用域
class A(object): def __str__(self): return "123" a = A() print a \\类实例化的时候就会执行,不须要额外调用
构造函数it
用于初始化类的内部状态,python提供的构造函数是_init_()class
_init_()方法时可选的,若是不提供,python会给出一个默认的__init__方法
析构函数:
用于释放对象占用的资源,python提供的析构函数是 _del_():
_del_()也是可选的,若是不提供,则python会在后台提供默认析构函数
python采用垃圾回收机制来清理再也不使用的对象;python提供gc模块释放再也不使用的对象
python采用“引用计数”的算法方式来回收,即:当某个对象在做用域内再也不被其余对象引用的时候,python就自动清除对象;
gc模块的collect()能够一次性收集全部待处理的对象(gc.collect)
import gc print gc.collect
继承是面向对象的重要特征之一;
继承关系:继承是相对两个类而言的父子关系,子类继承了父类的全部共有属性和方法
继承实现了代码重用
继承能够重写已存在的数据和行为,减小代码的重复编写,python在类名后面使用一对括号来表示继承关系,括号中的类即为父类。
class MyClass(ParentClass): class Parent(object): p1 = 1 def func(self): print "Parents" class Child(Parent): pass c = Child() c.func() ------ Patents
若是父类定义了__init__方法,子类必须显式调用父类的__init_方法:
ParentClass.__init__(self,[args...])
举例:
class Parent(object): def __init__(self,n): pass def func(self): pass
class Child(Parent): def init(self): Parent.init(self,"child")
若是子类须要扩展父类的行为,能够添加__init__方法的参数。
能够继承类的继承父类的方法和属性
class A(object): def __init__(self): print "A" print "AA" class B(object): def __init__(self): print "B" super(B,self).__init__() print "BB" b = B()
Python支持多重继承,一个类能够继承多个父类
class MyClass(Patent1,Parent2...)
注意,当父类中出现多个自定义的__init__方法时,多重继承只执行第一个类的__init__方法,其余的不执行