面向对象_基本概念(1)
来源:互联网 发布:淘宝权女朋友辣椒 编辑:程序博客网 时间:2024/05/22 01:26
写在最前
完成一个工作[或一个任务],会有不同的角色;而这个角色为了达成最终目的,会用到不同的方法和属性(空间) 把这个角色需要使用的方法和属性集中在一起展示出来,就形成了我们所说的类 任何一个人成为(类的实例化)这个角色,就都会拥有这个类(既定的方法和属性)。
示例说明(以老师为例):
老师 需要 备课,讲课,辅导学生
把这里的老师比做类,那么老师要教学生,就需要备课,讲课,辅导学生完成作业。备课,讲课,辅导学生就是老师的方法。
教科书就是一个属性,不同的老师可能还会有不同的教课器材,比如:物理老师有地球仪,化学老师还会有实验器材。教科书、地球仪、化学实验器材 这些就是属性
所有的老师都具备 备课,讲课,辅导学生 的能力,这就是老师这个类中的公共方法,所有的老师都有教科书,这个教科书就是公共属性
而物理老师的地球仪,化学老师的化学实验器材,这就是物理老师和化学老师各自独有的私有属性。
面向对象编程
1). 什么是面向对象编程?
使用类 + 对象 代替 函数 的形式
2). 什么是类,什么是对象,之间有什么关系
class aaa: passdd = 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() # 123print(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.age
公有属性: 在实例对象的内存区域
静态属性: 在类所在的内存区域
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) # 124d = 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 -- initd.ab() # Fa -- rund.show_check() # Fa__checkd.__ab() # AttributeError: 'Fa' object has no attribute '__ab'
两个 下划线 开头,声明该方法为 私有方法,不能在类外部调用
- 面向对象_基本概念(1)
- 面向对象_基本概念(2)
- 常量_面向对象基本概念day07
- Java入门_面向对象基本概念
- C++_面向对象程序设计基本概念
- 38_面向对象_11_继承_基本概念
- 1、学习面向对象 基本概念
- 【面向对象】Part 1 基本概念
- 面向对象基本概念(一)
- 黑马程序员_面向对象(1)
- 黑马程序员_面向对象(1)
- 黑马程序员_面向对象(1)
- 黑马程序员_面向对象(1)
- 黑马程序员_面向对象(1)
- 45_面向对象_18_多态_基本概念_强制转型问题_instanceof运算符
- 黑马程序员_面向对象_基础巩固(1)
- Python3面向对象编程(1):面向对象基本概念
- 面向对象的基本概念(一)
- FieldII命令汇总(part)
- 网络流题目
- java错题mark_4
- 他人理解+自理解+学习Mysql存储过程
- js弹出框、对话框、提示框、弹窗总结
- 面向对象_基本概念(1)
- 四、C_base——基本语句
- 图 概述
- android studio的Android Monitor没有连接上--No Debuggable Processes
- MySQL How to add a column in a table?
- 架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别
- ThinkPHP3.2.2-多文件上传
- 论文投稿与漫长的等待
- Hash表、Hash冲突