Python类和对象1

  • 1.面向对象编程 Object-Oriented Programming

    • 对象

      • 指现实中的物体或实体

      • 对象特征

        • 有很多属性(名词)

        • 有很多行为(动作,动词)

      • 面向对象

        • 拥有相同属性和行为的对象分为一组,即为一个类

      • 拥有相同属性和行为的对象分为一组,即为一个类

      • 类是用来描述对象的工具,用类可以创建此类的对象(实例)

    • 特征

      • 继承

      • 封装

      • 多态

  • 2.类和对象的基础语法

    • 类的定义

      • 类是创建对象的 ”模板”

      • - 数据成员:表明事物的特征。 相当于变量 - 方法成员:表明事物的功能。 相当于函数

      • 通过`class`关键字定义类。

        • class 类名 (继承列表): 实例属性(类内的变量) 定义 实例方法(类内的函数method) 定义 类变量(class variable) 定义 类方法(@classmethod) 定义 静态方法(@staticmethod) 定义

          • 类名必须为标识符(与变量的命名相同,建议首字母大写) 类名实质上就是变量,它绑定一个类

    • 实例化对象(构造函数)

      • 调用表达式

        • 变量 = 类名([参数])

      • 变量存储的是实例化后的对象地址。 类名后面的参数按照构造方法的形参传递

      • 对象是类的实例,具有类定义的属性和方法。 通过调用类的构造函数来创建对象。 每个对象都有自己的状态,但共享相同的方法定义。

      • 实例

        • 实例有自己的作用域和名字空间,可以为该实例添加实例变量(也叫属性)

        • 实例可以调用类方法和实例方法

        • 实例可以访问类变量和实例变量

    • self

      • 类实例化后,self即代表着实例(对象)本身

      • self`是类方法的第一个参数,用于引用对象本身。 `self`不是Python关键字,但是约定俗成的命名,可以使用其他名称代替,但通常不建议。

  • 3.属性和方法

    • 属性

      • 每个实例可以有自己的变量,称为实例变量(也叫属性)

      • 实例.属性名

      • 赋值规则

        • 首次为属性赋值则创建此属性.

        • 再次为属性赋值则改变属性的绑定关系.

      • 记录每个对象自身的数据

    • 方法

      • class 类名(继承列表): def 实例方法名(self, 参数1, 参数2, ...): "文档字符串" 语句块

        • 实例.实例方法名(调用传参) # 或 类名.实例方法名(实例, 调用传参)

      • 作用

        • 用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为

      • 实例方法说明

        • 实例方法的实质是函数,是定义在类内的函数

        • 实例方法至少有一个形参,第一个形参绑定调用这个方法的实例,一般命名为"self"

        • 实例方法名是类属性

    • 类属性

      • 类属性是类的属性,此属性属于类,不属于此类的实例

      • 通常用来存储该类创建的对象的共有属性

      • 类属性说明

        • 类属性,可以通过该类直接访问

        • 类属性,可以通过类的实例直接访问

    • 类方法

      • 类方法是用于描述类的行为的方法,类方法属于类,不属于该类创建的对象

        • 说明

          • 类方法需要使用@classmethod装饰器定义

          • 类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'

          • 类和该类的实例都可以调用类方法

          • 类方法不能访问此类创建的对象的实例属性

        • cls

          • 在Python中,`cls` 是一个约定俗成的名称,用于表示类本身。在类方法(使用 `@classmethod` 装饰的方法)中,`cls` 作为第一个参数传递给方法。这使得类方法可以访问和修改类属性以及调用其他类方法,而不需要引用具体的实例。

          • cls` 的作用

            • 1.访问类属性:类方法可以通过 `cls` 访问和修改类属性。

            • 2.调用类方法:类方法可以通过 `cls` 调用其他类方法。

            • 3.创建类实例:类方法可以使用 `cls` 来创建类的实例。

    • 静态方法 @staticmethod

      • 静态方法是定义在类的内部函数,此函数的作用域是类的内部

      • 说明

        • 静态方法需要使用@staticmethod装饰器定义

        • 静态方法与普通函数定义相同,不需要传入self实例参数和cls类参数

        • 静态方法只能凭借该类或类创建的实例调用

        • 静态方法可以访问类属性但是不能访问实例属性

    • 初始化方法

      • 对新创建的对象添加属性

      • class 类名(继承列表): def __init__(self[, 形参列表]): 语句块 # [] 代表其中的内容可省略

      • 初始化方法名必须为`__init__` 不可改变 初始化方法会在构造函数创建实例后自动调用,且将实例自身通过第一个参数self传入`__init__`方法 构造函数的实参将通过`__init__`方法的参数列表传入到 `__init__`方法中 初始化方法内如果需要return语句返回,则必须返回None

  • 4.继承/派生

    • 单继承

      • class 类名(基类名): 语句块

      • 单继承是指派生类由一个基类衍生出来的

    • 多继承

      • class DerivedClassName(Base1, Base2, Base3): <statement-1> . . . <statement-N>

      • 需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

  • 覆盖是指在有继承关系的类中,子类中实现了与基类同名的方法,在子类的实例调用该方法时,实际调用的是子类中的覆盖版本,这种现象叫覆盖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值