python--------------类

1.类的组成部分

类的属性,称之为:成员变量

类的行为,称之为:成员方法

注意函数是写在类外的,定义在类内部的是方法

2.类和成员方法的定义语法

class 类名称:

        成员变量

        

        def 成员方法(self, 参数列表):

                成员方法体

对象 = 类名称()

3.self的作用

表示类对象本身的作用

只有通过self,成员方法才能访问类的成员变量

self出现在形参列表中,但是不占用参数位置,无需理会

4.构造方法

名称是__init__,

作用:

构建类对象的时候会自动运行;

构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋值

注意事项:

构造方法不要忘记self关键字

在方法内使用变量需要使用self

5.内置方法(魔术方法)

有特殊功能的内置方法称之为魔术方法,__init__就是

构造方法: __init__;

字符串方法: __str__;

小于、大于比较符号:__lt__;

小于等于、大于等于符号比较:__le__;

等于符号比较: __eq__,(如果没有写魔术方法,比较的是内存地址)

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f'student类对象,name={self.name},age={self.age}'

    def __lt__(self, other):
        return self.age < other.age

    def __le__(self, other):
        return self.age <= other.age

    def __eq__(self, other):
        return self.age == other.age


stu1 = Student('zjj', 18)
stu2 = Student('hhh', 13)

# 定义了__str__方法后,打印的是返回的字符串
print(str(stu1))  # 如果想让对象以字符串的形式输出,需要用内置方法,直接写返回的是内存地址
print(stu1.age < stu2.age)  # False
print(stu1 > stu2)
print(stu1 >= stu2)
print(stu1 == stu2)  # 如果没有__eq__方法,比较的是地址一不一样

6.封装

概念:将现实世界事物在类中描述为属性和方法,即为封装

现实事物有部分属性和行为是不公开对使用者开放的。同样在类中描述属性和方法的时候也需要达到这个要求,所以需要私有成员和私有方法

定义方法:

私有成员变量和方法的命名均以__开头即可

访问限制:

类对象无法访问私有成员

类中的其他成员可以访问私有成员

7.继承

继承是一个类,继承另外一个类的成员变量和方法

语法:

class 类(父亲【,父亲2,……父亲N】):

        类内容体

子类构建的类对象,可以有自己的成员变量和成员方法;可以使用父类的成员变量和成员方法

单继承:一个类继承另一个类

多继承:一个类继承多个类,按照顺序从左向右依次继承

多继承中,如果 父类有同名方法和属性,先继承的优先级高于后继承的优先级

复写

子类对父类的成员属性或成员方法进行重新定义

复写的语法:

在子类中重新实现同名成员方法或属性即可

在子类中如何调用父类成员:

①方式一

调用父类成员

使用成员变量: 父类名.成员变量

使用成员方法: 父类名.成员方法(self)

② 方式二

使用super()调用父类成员

使用成员变量: super()成员变量

使用成员方法: super().成员方法()

只可以在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的

8.类型注解

(1)在代码中涉及数据交互时,对数据类型进行显示的说明,可以帮助

pyCharm等开发工具对代码做类型推理协助代码显示

开发者自身做类型的备注

(2)类型注解支持

变量的类型注解

函数(方法)的形参和返回值的类型注解

(3)变量的类型注解语法

语法1: 变量:类型

语法2: 在注释中, # type: 类型

元组类型设置类型详细注解时,需要将每一个元素都标记出来

字典类型设置类型详细注解时,需要两个类型,第一个是key,第二个是value

(4)注意事项

类型注解只是提示性的,并非决定性的。数据类型和注释类型无法对应时不会导致错误

9.函数类型注解

有形参的类型注解和返回值的类型注解

语法:

def 函数方法名(形参:类型,……形参:类型) -> 返回值类型:

        pass

注意返回值类型注解的符号使用 ->

10.Union类型

使用Union可以定义联合类型注解

使用方式

导包: from typing import Union

使用: Union[类型,……, 类型]

11.多态

定义:多态指的是同一个行为,使用不同得对象获得不同得状态

如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态

抽象类(接口)的定义:包含抽象方法的类,称之为抽象类。抽象方法指没有具体实现的方法(pass)

抽象类的作用:多用于做顶层设计(设计标准),以便子类具体实现,也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法并配合多态使用,获取不同的工作状态。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值