面向对象_基本概念(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'


两个 下划线 开头,声明该方法为 私有方法,不能在类外部调用



原创粉丝点击