Python面向对象编程(OOP)
一、面向对象过程的优点特征:
封装
1 模型的特征和能力打包在一起 2 模型的改变由模型自身完成 3 隐藏模型的细节,外界只能使用,不能改变
继承
1 符合自然界分类规律 2 快速实现代码重用 3 符合现实世界中事物的特征
多态
1 子类可以继承父类的特征与能力 2 还可以通过自定义来修改其特征与能力 3 鸭子模型: 4 只要具有使用者的属性或能力便可以使用 5 |==>其他语言需要通过接口来实现 6 不同类,相同方法 7 相同类,不同方法
组合
1 一个模型可以由其他模型组成
二、类的具体实现和特征
1、类的定义
1 class TextClass: 2 pass
在python3中默认继承object父类
#python2默认为经典类,显式引用object类为新式类
#python3默认为新式类,不用显式引用object类
!!!!!
经典类继承为深度优先
新式类继承为广度优先
2、类的特征,能力,描述
【1】能力==>体现在方法上,类具有能动性
【2】特征属性,是具有自身包含或知道的模型
3、类的实例化
1 前面定义了TestClass类 2 接下来实例化 3 A=TestClass()
【1】与类的关系:定义类就是建立模型(就像是印章,模子)
实例就是产生真实的模型产品(产品)
【2】实例化步骤
(1)‘__new__()'方法创建实例
自动从object继承
(2)’__init__()'方法初始化实例
若是定义了,则从定义的'__init__'开始使用定义了的(就是方法的重载)
若是没有定义,则使用继承自object类的‘__init__'方法
4、添加类的说明
在类名的下一行用三引号标出
“”“
docstring
”“”
这就是类的说明文档
类的文档查看:
>>>help(A)
#A为要查看的类名
>>>A.__doc__
5、类的特征描述
【1】实例属性
类被实例化才具有的属性
一般在'__init__'()方法中创立并实例化
直接使用即定义:self.<属性名>
<1>在类内定义属性(定义类的时候)
<2>在类外定义属性(在实例化以后)
!注意:相同类的不同实例具有不同的属性值
备注:一般不建议在__init__()方法外定义,创建和初始化实例,
一般不推荐类外定义和修改,修改可以单独定义方法
【2】类属性
类属性使得相同类的不同实例具有相同的变量
>>引用方法:类名.属性
【3】类的私有属性
‘__'开头的变量名加以标志,只有类对象自己能访问。(内部实现时会自动改变变量名)
’__init__()' 初始化类的方法 ’__doc__' 类的说明文档
‘__dict__' 实例属性和值 ’__module__' 类所在的模块
‘__base__' 父类
6、类的方法
【1】类方法定义
类似面向过程中的函数定义方法
第一个参数总是self
1 def Foo(self,a): 2 self.a=a 3 print(self.a)
【2】类方法的调用
<1>类的内部调用:self.<方法名>(参数列表)
<2>类的外部调用:<实例名>.<方法名>(参数列表)
【3】构造方法 ’__init__()' 初始化实例
实例化步骤:1、‘__new__()' 定义新的实例 2、’__init__' 初始化实例
>>>>>>>>>>>>>>未完待续2018-03-04<<<<<<<<<<<<<<<