07-Python之面向对象编程(定义)

# 面向对象一些基本理解

- 面向对象编程(Object Oriented Programming, OOP),是一种程序设计思想。

  - 主要针对大型软件设计而提出,使软件设计更加灵活。

  - 支持代码复用和设计复用,使代码由更好的可读性和可扩展性。

  - OO: 面向对象
  - OOA:面向对象的分析
  - OOD:面向对象的设计
  - OOI:面向对象的实现
  - OOP:面向对象的编程
  - 面向对象的实现过程:OOA->OOD->OOI

- 类和对象的概念: 
  - 对象:具体的事物,单个个体,类中的一个实例
    - 作为程序的基本单元,一个对象包含了数据和操作数据的函数。
  - 类:抽象名词,代表一个集合,共性的事物
    - 对相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。
- 类跟对象的关系:
  - 一个是抽象,代表的是一大类事物
  - 一个具象,代表一类事物的某一个个体

# 类的定义

- 基本格式:

  class ClassName(object):

    属性...

    方法...
    ......

- 定义一个类:

  - 必须用class关键字
  - 类由属性和方法构成,其他不允许出现
  - 成员属性定义可以直接使用变量赋值,如果没有值,使用None
  - 类的注释,方便理解类的作用,包括属性方法。

- 类的命名规则推荐:

  - 遵守变量命名的规范
  - 大驼峰(有一个或者多个单词构成,每个单词首字母大写,单词跟单词之间相连)
  - 尽量避开跟系统命名相似的命名
- (object)表示类是从哪个类继承下来的,默认是object类.(可省略)

 

- 类当中基本的内容:

  - 属性:

    - 概念: 一个对象的特征(变量)
    - 分类:
      - 1.实例属性:
        - 一般在构造函数__init__()中定义,定义和使用必须以self作为前缀
        - 实例属性属于实例(对象),只能通过对象名访问。
      - 2.类属性:
        - 是指类中所有方法之外定义的数据成员,可以通过类名访问,也可以通过对象访问
        - 分类:公有属性、保护属性、私有属性

  - 方法:

    - 概念:一个对象的行为,称为方法(函数)
    - 分类:
      - 1.实例方法
        - 公有方法
          - 通过对象名调用
        - 私有方法
          - 不能通过对象名直接调用,
          - 只能在属于对象的方法中通过self调用或者在外部通过其他特殊方式调用
        - 注意:

          - 形参列表第一个参数都要定义且最好命名为self
          - 默认第一个参数代表的是实例化的类对象的引用
          - 需要实列化对象才能使用,使用过程中可能需要截至对象的其他对象的方法完成

        - 调用方法:
          - 标准调用(推荐使用)、类调用、间接调用

      - 2.静态方法

        - 使用staticmethod()内置函数。
        - 默认第一个参数需要接收到一个类
        - 调用:通过类名或对象名
          - 不需要实例化,通过类直接访问,多个实例共享此静态方法
          - 不能直接访问属于对象的成员,只能访问属于类的成员
      - 3.类方法
        - 一般将cls作为类方法的第一个参数名称,调用类方法时不需要为该参数传递值
        - 可以通过类或者它的实例来调用

  - 关于self:

    - 类的所有实例方法都必须至少有一个名为self的参数,并且必须是方法的第一个形参。
    - self 在对象的方法中表示当前对象本身。
    - 如果通过对象调用第一个方法,那么该对象会自动传入到当前方法的第一个参数中
      - self 不是关键字
      - 只是一个普通的参数
    - 理论上可以用任何一个普通变量代替
    - 方法中有self 形参的方法称为非绑定的方法,
      - 可以通过对象访问
      - 没有self的是绑定类方法,只能通过类访问
    - 使用类访问绑定类的方法时,如果类方法总中需要访问当前类的成员,可以通过__class__成员来访问

  * 案例1.创建类

# 1.简单的定义(经典类)
class Person:  # 括号可以省略
    pass    # pass就是一个占位符,什么也不是
########################################
# 2.创建包含属性的类
class Person:
    # 1.类属性
    # 1.1公有属性
    name = "xiaohei"
    # 1.2保护的属性
    _sex = "boy"     # 以一个"_"开头则表示是被保护的属性
    # 1.3私有属性
    __age = 3        # 以两下划线"__"开头的则表示是私有属性
    
    # 2.实例属性
    def __init__(self, c):     # self形参不能缺少
        self.master = "humance"
        self.aother = c
        self.other = '添加属性'
        print(c)
########################################    
# 3.创建包含方法的类
class Person:
    # 类属性
    name = "xiaobai"  
    
    # 类方法
    # 1.共有方法(实例方法)
    def eat(self, f):
        print(self, f)
    # 2.私有方法
    def __siyoufangfa(self):
        print("这是一个私有方法",  self)
    # 3.类方法
    @classmethod
    def leifangfa(cls):
        print("这是一个类方法",cls)
    # 4.静态方法 
    @staticmethod
    def jingtaifangfa():
        print("这是一个静态方法")

 

posted @ 2019-07-24 11:16  xiaoou7  阅读(281)  评论(0编辑  收藏  举报