面向对象_基本概念(1)
2017-07-07 19:21
246 查看
写在最前
示例说明(以老师为例):
老师 需要 备课,讲课,辅导学生
把这里的老师比做类,那么老师要教学生,就需要备课,讲课,辅导学生完成作业。备课,讲课,辅导学生就是老师的方法。
教科书就是一个属性,不同的老师可能还会有不同的教课器材,比如:物理老师有地球仪,化学老师还会有实验器材。教科书、地球仪、化学实验器材 这些就是属性
所有的老师都具备 备课,讲课,辅导学生 的能力,这就是老师这个类中的公共方法,所有的老师都有教科书,这个教科书就是公共属性
而物理老师的地球仪,化学老师的化学实验器材,这就是物理老师和化学老师各自独有的私有属性。
使用类 + 对象 代替 函数 的形式
2). 什么是类,什么是对象,之间有什么关系
类: 属性[变量] 和 函数[方法] 的集合
对象: 类的实例
1). 实例化即调用
2). 类名首字母大写【命名规范】
3). 在类的继承中,py2 和 py3的区别:[横向]广度查找,[纵向]深度查找
4). 面向对象,代码可改造性强
5). 不同角色,用不同的视角
__doc__
当前操作的对象在哪个模块
__module__
当前类的所有父类(所有父类组成的元组)
__bases__
构造(方法)函数
__init__
析构方法
__del__( self )
属性: 公有属性、私有属性
方法: 公有方法、私有方法
两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问。在类内部的方法中使用时
self.__private_attrs
>
公有属性: 在实例对象的内存区域
静态属性: 在类所在的内存区域
1). 在类代码区内,静态属性只能由类名访问
2). self 可以访问公有属性,也可以访问静态属性
3). 在公有属性和私有属性同名的情况下,self 访问顺序同 函数 内外的局部与全局变量访问方式:先函数内查找,函数内[公有属性(self)]没有再找全局[静态属性(类名)]
4). 公有属性 如果与 静态属性 同名。两个变量在不同的内存地址,不可混淆。
5). 如果两者在代码区内的任何地方被更改,后续代码都得到更改后的值。
完成一个工作[或一个任务],会有不同的角色;而这个角色为了达成最终目的,会用到不同的方法和属性(空间) 把这个角色需要使用的方法和属性集中在一起展示出来,就形成了我们所说的类 任何一个人成为(类的实例化)这个角色,就都会拥有这个类(既定的方法和属性)。
示例说明(以老师为例):
老师 需要 备课,讲课,辅导学生
把这里的老师比做类,那么老师要教学生,就需要备课,讲课,辅导学生完成作业。备课,讲课,辅导学生就是老师的方法。
教科书就是一个属性,不同的老师可能还会有不同的教课器材,比如:物理老师有地球仪,化学老师还会有实验器材。教科书、地球仪、化学实验器材 这些就是属性
所有的老师都具备 备课,讲课,辅导学生 的能力,这就是老师这个类中的公共方法,所有的老师都有教科书,这个教科书就是公共属性
而物理老师的地球仪,化学老师的化学实验器材,这就是物理老师和化学老师各自独有的私有属性。
面向对象编程
1). 什么是面向对象编程?使用类 + 对象 代替 函数 的形式
2). 什么是类,什么是对象,之间有什么关系
class aaa: pass dd = aaa() aaa //类 aaa() //类对象 dd //实例对象
类: 属性[变量] 和 函数[方法] 的集合
对象: 类的实例
1). 实例化即调用
2). 类名首字母大写【命名规范】
3). 在类的继承中,py2 和 py3的区别:[横向]广度查找,[纵向]深度查找
4). 面向对象,代码可改造性强
5). 不同角色,用不同的视角
内置方法【部分】
类的描述信息__doc__
当前操作的对象在哪个模块
__module__
当前类的所有父类(所有父类组成的元组)
__bases__
构造(方法)函数
__init__
析构方法
__del__( self )
类属性
注意:通常你需要在单独的文件中定义一个类属性: 公有属性、私有属性
方法: 公有方法、私有方法
类的私有属性
class Fa: def __init__(self): self.__age = 123 print(Fa.__age) d = Fa() # 123 print(Fa.__age) # AttributeError: type object 'Fa' has no attribute '__age'
两个下划线开头,声明该属性为私有,不能在类外部被使用或直接访问。在类内部的方法中使用时
self.__private_attrs
类的公有属性、静态属性
class Fa: age = 123 # 静态属性 def __init__(self): self.age = 333 # 公有属性 print(self.age) print(Fa.age) # age 查找顺序: self.age --> Fa.age9ed3
>
公有属性: 在实例对象的内存区域
静态属性: 在类所在的内存区域
1). 在类代码区内,静态属性只能由类名访问
2). self 可以访问公有属性,也可以访问静态属性
3). 在公有属性和私有属性同名的情况下,self 访问顺序同 函数 内外的局部与全局变量访问方式:先函数内查找,函数内[公有属性(self)]没有再找全局[静态属性(类名)]
4). 公有属性 如果与 静态属性 同名。两个变量在不同的内存地址,不可混淆。
5). 如果两者在代码区内的任何地方被更改,后续代码都得到更改后的值。
class Fa: age = 123 def __init__(self): self.age = 333 print(self.age) # 333 print(Fa.age) # 123 Fa.age += 1 self.age -=1 def run(self): print(self.age) # 332 print(Fa.age) # 124 d = Fa() d.run()类方法
在类的内部,使用 def 关键字可以为类定义一个方法
与一般函数定义不同,类方法必须包含参数 self ,且为第一个参数
但在调用时不必传入相应的参数,系统将默认接收为实例对象类的私有方法
class Fa: def __init__(self): print('Fa -- init') def run(self): print('Fa -- run') def show_check(self): self.__check() def __check(self): print('Fa__check') d = Fa() # Fa -- init d.ab() # Fa -- run d.show_check() # Fa__check d.__ab() # AttributeError: 'Fa' object has no attribute '__ab'
两个 下划线 开头,声明该方法为 私有方法,不能在类外部调用
相关文章推荐
- 第1章 Java基本概念及环境配置——FAQ1.02 面向对象程序设计的基本特征有哪些?
- 面向对象基本概念
- 面向对象的基本概念
- 面向对象的基本概念
- 面向对象中的基本概念
- JAVA面向对象编程基础复习(一)面向对象基本概念
- 面向对象的基本概念
- 面向对象的基本概念与特征
- Java与C++在面向对象基本概念上的区分
- 面向对象的基本概念
- 面向对象基本概念
- C++面向对象基本概念
- 面向对象基本概念
- 面向对象基本概念
- 浙大面向对象程序设计笔记.类与对象的基本概念
- 面向对象的基本概念
- 面向对象的基本概念(一)
- 面向对象基本概念
- 面向对象的基本概念(二)--UML.类之间的关系
- 面向对象的基本概念(二)--UML.类之间的关系