面向对象编程(Object Oriented Programming,OOP),是使用对象(Objects)做为核心的编程方式。
进而就能够把对象(Objects)的数据和运算过程封装(Encapsulate)在内部,而外部仅能根据事先设计好的界面(Interface)与之沟通。编程
对象的构成:ide
属性 —— 用天然语言描述,一般是名词(Nouns)
方法 —— 用天然语言描述,一般是动词(Verbs)
举个例子:建立一个对象Teacher(老师)函数
Teacher的属性有name(姓名)、age(年龄)等,Teacher 的方法有teacher(上课)、study(学习)学习
EnglishTeacher(英语老师)也属于Teacher,因此EnglishTeacher能够继承Teacher而且使用Teacher的属性和方法this
MathTeacher(数学老师)的teach方法不一样于EnglishTeacher,因此能够对方法进行重写。设计
类的私有属性code
private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.private_attrs。orm
类的方法对象
在类的内部,使用 def关键字来定义一个方法,与通常函数定义不一样,类方法必须包含参数 self,且为第一个参数,self 表明的是类的实例。blog
self 的名字并非规定死的,也能够使用 this,可是最好仍是按照约定用 self。
类的私有方法
private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。在类内部调用self.private_methods。
Python 类定义
Class 使用 class 关键字进行定义。class name使用驼峰标识,例如MyClass:
# 定义类 class Teacher: def __init__(self, name, age): self.name = name self.age = age def teach(self): print("{0} teach".format(self.name)) def study(self): print("{0} study".format(self.name)) # 建立类的实例 my_teacher = Teacher("zhangsan", 18) my_teacher.teach() # 输出 zhangsan teach
注:
self 用来指代未来用这个 Class 建立的 Instance实例。
init() 函数是系统建立实例后被初始化的函数。这个函数名称是强制指定的,初始化函数必须使用这个名称;注意 init 两端各有两个下划线 _。
self.name,self.age 各接收了一个参数,表示用户属性
Python 类继承
继承,顾名思义,新的事物拥有旧事物的特征,而且能够传递下去。
在Python中,继承的范围更广,好比定义一个实例Teacher,则新的实例EnglishTeacher是老师,因此能够继承Teacher。老师有姓名、年龄、性别等属性,有上课、学习等方法,则英语老师继承老师的全部属性和方法。
再好比,定义一个实例Mother母亲,定义一个实例Father父亲,则新的实例Kids孩子不但能够继承Mother还能够继承Father。
以上两个例子分别是单继承和多继承。
Python能够实现单继承和多继承
单继承
# # EnglishTeacher继承Teacher类 class EnglishTeacher(Teacher): def __init__(self, name, age, score): self.name = name self.age = age self.score = score def teach(self): print("{0} teach".format(self.name)) # 建立类的实例 teacher = EnglishTeacher("xiaomeng", 10) teacher.teach() # 输出 xiaomeng teach
多继承
# 定义父亲类 class Father: def __init__(self, name, age): self.name = name self.age = age def speak(self): print("{0} is father".format(self.name)) # 定义母亲类 class Mother: def __init__(self, name, age): self.name = name self.age = age def speak(self): print("{0} is mother".format(self.name)) # Kid继承Father和Mother类 class Kid(Father, Mother): def speak(self): print("{0} is kid".format(self.name)) # 建立类的实例 kid = Kid("student", 6) kid.speak() # 输出 baby is kid