(1) 面向对象编程(oop)
面向对象就是将客观存在的事物描述成对象,然后通过抽象的思维方式,把事物分解成人们易于理解的对象模型,然后根据对象模型构建应用程序的功能
在面向对象编程的世界里:万物皆对象(一切都是对象)
(2) 面向对象的三个特征
封装,继承,多态
(3) 面向对象编程两个重要的概念
1) 类 类是创建对象的模板
2) 对象 对象是类的具体体现
每一类事物都有共同性,面向对象编程就是把每一类事物的共同,根据抽象原则,提出的一个组件(类)
(4) 面向对象的好处
1) 面向对象重点强调的是程序的执行状态
2) 面向对象让程序员从一个执行者,变成了一个指挥者
(5) 类的组成
1) 属性:是描述事物的特征,其实就是变量
2) 行为:是描述事物的具体动作,其实就是函数
(6) 命名规范
1) 类名的命名规范(帕斯卡命名法 大驼峰)
类名尽量使用名称,类名如果有一个单词组成,单词的首字母大写,其他字母小写;如果类名有多个单词组成,那么每个单词的首字符大写,其他字母小写
2) 变量名的命名规范:
变量名尽量使用形容词,可以使用小驼峰
如果变量名由一个单词构组成,单词所有字母小写;如果变量名由多个单词时,第一个字母首字母小写,其他首字母大写,其他字母小写.也可以所有字母小写,单词与单词之间用下划线隔开
3) 函数名命名规范
函数名尽量使用动词,其他规范同变量名
(7) 实例化对象的语法
对象名 = 类型名()
(8) 通过对象名调用函数:
对象名.函数名([参数])
(9) 对象名
对象名其实就是引用了一个对象的首地址,对象名引用首地址称为对象引用.一个对象的首地址如果没有对象引用,那么它就是垃圾对象,垃圾回收机制会自动回收垃圾对象
(10) 在python语言中表示当前对象用self
–init–魔法方法
(1) init魔法方法的定义
一个类中如果没有显示定义魔法方法,那么系统会为该类提供一个默认的无参数的init方法
一个类中如果显示定义了init魔法方法,那么系统就不会再为该类提供默认的init方法
(2) init魔法方法的使用
无参数的init方法用于实例化对象
有参数的init方法用于实例化对象的同时,还能初始化对象
对象传递
(1) 对象是可变类型,函数是不可变类型
(2) python是值传递和引用传递的一种综合
如果传递的参数是可变类型,那么它就是引用传递
如果传递的参数是不可变类型,那么它就是值传递
匿名对象
(1) 匿名对象的定义
匿名对象就是没有名字的对象,其实就是实例化对象的简写形式
(2) 匿名对象的语法
类名([参数])
(3) 使用匿名对象调用属性
类名([参数]).属性名
(4) 匿名对象的用法
1) 当对象模板中的属性或行为进行一次调用时,可以使用匿名对象
2) 匿名对象作为参数就行传递
面向对象的三大特征
(1)封装
封装就是把对象的属性和行为私有化,达到封装的目的.
属性一旦封装就只能在本类内部直接使用,属性一旦封装,就应该对外界提供的setter和getter方法,以便外界对属性的设置和获取
方法一旦封装,外界无法访问,只能在本类使用,所有方法封装要慎重,封装就是提高代码的安全性
(2)setter和getter方法
1) setter方法的书写
Setter方法的签名:set_设置的属性名
Setter方法有两个参数:一个是self,一个是你设置的属性
Setter方法都没有返回值
2) getter方法的书写
Getter方法的签名:get_设置的属性名
Getter方法的参数只有一个:就是self
Getter方法都有返回值,return获取属性
(3)继承
同类事物具有共同性,又有特殊性.根据抽象原则,提出该类事物的共同性就组成了该类事物的父类,每个子类只关心自己的特殊性
继承是为了提高代码的复用性.
继承的语法:
class 子类(父类1, 父类2,…)
(4)多态
1) 多态产生的前提:
继承
方法重写
向上转型:把子类实例化成父类对象称为向上转型.由于python是弱类型语言是靠等号右边的值来确定类型,所有它就不存在向上转型.
(3) 多态是强类型语言中体现的,在弱类型语言中体现的不是很明显