目录

  • 前言
    • ●  Python解释器安装
    • ●  PyCharm开发环境
  • Python程序设计实验
    • ●  实验1 IDLE与代码编写规范
    • ●  实验2 输入输出与数据类型
    • ●  实验3 字符串处理
    • ●  实验4 数据运算
    • ●  实验5 列表与元组应用
    • ●  实验6 字典与集合应用
    • ●  实验7 if语句与match语句
    • ●  实验8 使用循环语句
    • ●  实验9 异常处理
    • ●  实验10 函数应用
    • ●  实验11 类的应用
    • ●  实验12 模块应用
    • ●  实验13  应用re模块
    • ●  实验14 文件处理
    • ●  实验15 用户界面设计
    • ●  实验18 SQLite数据库应用
    • ●  理论考试模拟试题A
    • ●  理论考试模拟试题B
    • ●  理论考试模拟试题C
    • ●  理论考试模拟试题D
  • 学习参考
    • ●  01 Python及其IDLE环境
    • ●  02 Python代码规范
    • ●  03 常量和变量
    • ●  04 输入输出
    • ●  05 运算符
    • ●  06 数值类型
    • ●  07 字符串
    • ●  08 列表
    • ●  09 元组
    • ●  10 字典
    • ●  11 集合
    • ●  12 条件语句
    • ●  13 循环语句
    • ●  14 异常处理
    • ●  15 自定义函数
    • ●  16 内置函数
    • ●  17 模块导入与定义
    • ●  18 math模块
    • ●  19 os模块
    • ●  20 time模块
    • ●  21 random模块
    • ●  22 文本文件
    • ●  23 二进制文件
    • ●  24 类的创建和使用
    • ●  25 类的继承与多态
 24 类的创建和使用

一、创建类的格式

class 类名([父类])

     属性与方法定义

特别提示:

(1)父类缺省时为object。新创建的类称为父类的子类。子类拥有父类的公有属性和方法。

(2)子类可重写父类的方法。

(3)如果子类没有重写__init__方法,则子类实例化时自动调用父类的__init__方法。如果子类已重写__init__,则子类实例化时不调用父类的__init__方法。

(4)在子类中可通过“父类名.方法名()”调用父类的方法(需传递self参数)。

(5)可以同时继承多个父类创建子类。


二、定义类属性与对象属性

(1)类属性:在类的内部、类的所有方法的外部定义的变量,为类属性。

(2)对象属性:在类的方法内定义的变量,为对象属性。

示例(其中studentNum为类属性,name和age均为对象属性):

class Student( ):

    studentNum=0

    def __init__(self,name,age):

        self.name=name

        self.age=age

特别提示:

(1)对象属性只能由对象读写,类不能读写对象属性。类可以读写类属性,对象只能读类属性。对象属性与类属性同名时,对象将无法读取类属性。

(2)定义类后还可以通过类名创建类属性。如:Student.state="using"

(3)创建类的实例后,可以为实例创建对象属性。如:st1=Student("ZhangHui",22);st2=Student("LiuMin",20);st1.xh="B03"。这时st1有xh属性,但st2没有xh属性。

(4)以双下划线开头的属性为私有属性,只能在类内部访问,外部不能读写。除私有属性外,其他属性均为公有属性。

示例(其中__locked为类的私有属性,studentNum为类的公有属性;name、age为对象公有属性,__sid为对象私有属性):

class Student():

    studentNum=0

    __locked=0

    def __init__(self,name,age):

        self.name=name

        self.age=age

self.__sid=0


三、创建类方法与对象方法

(1)在类的定义中,使用关键字@classmethod声明,且第一个参数为cls的方法是类方法。

(2)未使用关键字@classmethod声明,第一个参数为self的对象方法是对象方法。

示例(其中__init__、show均为对象方法,see为类方法):

class Student():

    studentNum=0

    def __init__(self,name,age):

        self.name=name

        self.age=age

        Student.studentNum+=1

    def show(self):

        print(self.name,self.age)

    @classmethod

    def see(cls):

        print(cls.studentNum)

特别提示:

(1)在对象方法中,可以通过“类名.类属性名”的方式读写类属性。在类方法中,通过“cls.类属性名”的方式读写类属性。

(2)类方法可由类和对象调用。对象方法只能由对象调用。

(3)类的定义中,以双下划线开头命名的方法为私有方法,否则为公有方法。公有方法可由外部调用,私有方法只能由类内部调用。


四、构造函数与析构函数

(1)构造函数是指命名为“__init__”的对象方法。

特别提示:

构造方法在创建类的实例时自动运行。可以为构造方法指定其他参数。如:

class Student():

    def __init__(self,name,age):

        self.name=name

        self.age=age

这时,在实例化时可传递参数。如:st=Student("张三",18)

(2)析构方法是指命名为“__del__”的对象方法。

特别提示:

析构方法在类的实例被删除时自动运行。如:

class Student( ):

    studentNum=0

    def __init__(self,name,age):

        self.name=name

        self.age=age

        Student.studentNum+=1 #创建类的实例时,类属性studentNum自动增加1

    def __del__(self):

        Student.studentNum-=1#删除类的实例时,类属性studentNum自动减少1

st1=Student("xiaoming",18)

st2=Student("zhaoji",19)

print(Student.studentNum)

del st2

print(Student.studentNum)


五、创建静态方法

以@staticmethod声明的方法为静态方法。

(1)静态方法不需要cls或self参数。如果一个方法不需要读写类实例的属性,则可以声明为静态方法。

(2)在静态方法中,可能通过“类名.方法或属性名”的方式访问类方法或类属性。