021 面向对象 一

概述

OOP 思想

  • 接触到任意一个任务,首先想到的是任务中的世界的构成(模型化)

几个名词

名词 释义
OO 面向对象
OOA 面向对象分析
OOD 面向对象设计
OOI 面向对象实现
OOP 面向对象编程
  • 面向对象的实现过程:OOA > OOD > OOI

类与对象

  • 概念

    术语 概念
    抽象名词,代表一个集合,共性的事物
    对象 具象的事物,单个个体
  • 关系

    术语 释义
    抽象,代表一大类事物
    对象 具象,代表某一类事物的某一个个体
  • 类的两个内容

    术语 释义
    属性(变量) 表明事物的特征
    成员方法(函数) 表明事物功能或动作

类的基本实现

类的命名

  • 遵守变量命名的规范
  • 使用大驼峰,形如 YorkFish
  • 尽量避开系统命名

类的声明

  • 必须用 class 关键字
  • 类由“属性”和“方法”构成,不允许出现别的
  • 定义成员属性可以直接使用变量赋值,如果没有值,允许使用 None

类的实例化

class Person:
    pass


york = Person()	 # 实例化了一个对象

类与成员

访问对象成员

class Person:
    def __init__(self, age=18):
        self.age = age

    def learn(self, lesson="Python"):
        print("I am learning %s." % lesson)


york = Person()
print(york.age)  # 使用点操作符访问对象
york.learn()

检查所有成员

  • 通过默认内置变量检查

检查类的所有成员

class Person:
    pass


print(Person.__dict__)

检查对象的所有成员

class Person:
    pass


york = Person()
print(york.__dict__)

成员分析

  • “类”与“对象”都可以存储成员,成员可以归“类”所有,也可以归“对象”所有

  • “类”存储成员时使用的是与“类”关联的一个“对象”

  • “对象”访问一个成员时

    • 如果“对象”中没有该成员,尝试访问“类”中的同名成员
    • 如果“对象”中有此成员,一定使用“对象”中的成员
  • 创建“对象”时,“类”中的成员不会放入对象当中,而是得到一个空对象,没有成员

  • 通过“对象”对“类”中成员重新赋值,或者通过“对象”添加成员时,对应成员会保存在对象中,而不会修改类成员

self

  • self 在对象的方法中表示当前对象本身
    • 通过对象调用一个方法时,该对象会将“自己”自动传至当前方法的第一个参数中
    • 即,哪个对象调用的方法,方法内的 self 就是指向哪个对象的引用
  • self 并不是关键字
    • 它只是一个用于接收对象的普通参数
    • 可以用任何一个普通变量名代替,但不推荐
  • 方法中有 self 形参的方法称为非绑定类的方法,可以通过对象访问
  • 方法中没有 self 的是绑定类的方法,只能通过类访问
  • 使用类访问绑定类的方法时,如果类方法中需要访问当前类的成员,可以通过 __class__.成员名 来访问
原文地址:https://www.cnblogs.com/yorkyu/p/10664177.html