21、面向对象
面向对象
类和对象
-
面向过程和面向对象的编程
- 面向过程的编程:函数式编程,C程序等
- 面向对象的编程:C++,Java,Python等
-
类和对象:是面向对象中的两个重要概念
- 类:是对事物的抽象,比如:汽车模型
- 对象:是类的一个实例,比如:QQ轿车,大客车
-
范例说明
- 汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化一台真实的汽车实体出来
Python类定义
-
Python类的定义
- 使用class关键字定义一个类,并且类名的首字母要大写
- 当程序员需要创建的类型不能用简单类型表示时就需要创建类
- 类把需要的变量和函数组合在一起,这种包含也称之为“封装”
-
Python类的结构
class 类名: 成员变量 成员函数 class MyClass(): first = 123 def fun(self): print "I am function"
-
对象的创建
- 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
-
句柄用于区分不同的对象
-
对象的属性和方法与类中的成员变量和成员函数对应
if __name__ == "__main__": myClass = MyClass() #创建类的一个实例
-
- 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。
-
构造函数__init__
class Person: def __init__(self, name, lang, website): self.name = name self.lang = lang self.website = website
-
self是一个很神奇的参数
- self指向类的一个实例,当实例调用方法时,self就指向这个调用的方法的实例
-
子类、父类和继承
# 抽象形状类 class Shape: # 类的属性 edge = 0 # 构造函数 def __init__(self, edge): self.edge = edge # 类的方法 def getEdge(self): return self.edge # 抽象方法 def getArea(self): pass #三角形类,继承抽象形状类 class Triangle(Shape): width = 0 height = 0 # 构造函数 def __init__(self, width, height): #调用父类构造函数 Shape.__init__(self, 3) self.width = width self.height = height #重写方法 def getArea(self): return self.width * self.height / 2 #四边形类,继承抽象形状类 class Rectangle(Shape): width = 0 height = 0 # 构造函数 def __init__(self, width, height): #调用父类构造函数 Shape.__init__(self, 4) self.width = width self.height = height #重写方法 def getArea(self): return self.width * self.height triangle = Triangle(4,5); print triangle.getEdge() print triangle.getArea() rectangle = Rectangle(4,5); print rectangle.getEdge() print rectangle.getArea()
-
python支持多继承,但不推荐使用