3.0 类的内置方法

所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。

比如,汽车是一个类,汽车的地盘,轮胎也可以抽象为类,将其定义到汽车的类中,则形成内部类,更好的描述汽车类,因为底盘、轮胎是汽车的一部分

创建内部类的方法和创建类的方法很相似

内部类的实例化方法

方法1:直接使用外部类调用内部类

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  \\类实例化的时候就会执行,不需要额外调用

构造函数与析构函数

构造函数

用于初始化类的内部状态,python提供的构造函数是_init_()

_init_()方法时可选的,如果不提供,python会给出一个默认的__init__方法

析构函数:

用于释放对象占用的资源,python提供的析构函数是 _del_():

_del_()也是可选的,如果不提供,则python会在后台提供默认析构函数

垃圾回收机制

python采用垃圾回收机制来清理不再使用的对象;python提供gc模块释放不再使用的对象

python采用“引用计数”的算法方式来回收,即:当某个对象在作用域内不再被其他对象引用的时候,python就自动清除对象;

gc模块的collect()可以一次性收集所有待处理的对象(gc.collect)

import gc
print gc.collect

3.1-3.2 类的继承

继承是面向对象的重要特征之一;

继承关系:继承是相对两个类而言的父子关系,子类继承了父类的所有共有属性和方法

继承实现了代码重用

继承可以重写已存在的数据和行为,减少代码的重复编写,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__方法的参数。

super函数

可以继承类的继承父类的方法和属性

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__方法,其他的不执行

12-06 05:30