小白学习之python—图形化界面设计与类(带例理解)

发布时间:2024年01月16日

注:仅上课笔记和一些自己的理解,不保证完全无错,


一、类的定义

????????类(class)是面向对象程序设计实现信息封装的基础,是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

? ? ? ? 1、说明

? ? ? ? ? ? ? ? ① 在Python语言中,类使用关键字class定义。在类中可以创建变量使用赋值语句定义函数等。

? ? ? ? ? ? ? ? ② 类将对象的行为、数据和属性进行了封装。在Python语言里,类中的变量就是对象的数据、属性,函数作为对象的行为又被称为方法。

? ? ? ? 2、语法

? ? ? ? ? ? ? ? ? ? 如何创建自定义类:

class 类名() :

? ? ? ? 赋值语句

? ? ? ? ……

? ? ? ? ? ? ? ? def语句定义函数

? ? ? ? ? ? ? ? ……


二、类的变量

?????????类的属性指的是类或对象的一些特征。如果定义一个学生类,那么学生的学号、姓名、班级、性别和年龄等就可以作为学生类的属性。简言之,类的属性描述了该类的内部信息,类属性就相当于一个类的变量,在类中可以定义的变量类型分为实例变量和类变量两种。

? ? ? ? 1、类变量的定义

????????在Python环境中,可以直接使用类名来调用类变量,这个类名其实对应着一个由Python自动创建的对象,这个对象称为类对象,它是一个全局唯一对象。我们推荐使用类对象来调用类变量这种方式。虽然在Python中也允许使用实例对象来调用类变量,但这样有时会带来一些困扰。

class 类名():

? ? ? ? 变量名=变量初始值

? ? ? ? 2、实例变量的定义

?????????我们经常将实例变量定义在构造方法中,这样当实例化的对象被创建时,实例变量就会被定义和赋值。因此,实例变量在类的任意一个方法中都可以被调用。

self.变量名=值


三、类的方法

????????类的方法用于描述对象的行为。如果把学生作为对象,则写作业、上课、考试和跑步等都可以作为学生对象的方法。

????????在类内部定义方法与在类外部定义函数较为相似,并且在实际应用中,方法和函数拥有的功能也是相同的。不同之处在于,一个定义在类内部,一个定义在类外部。定义在类内部的称为方法,定义在类外部的称为函数实例方法是最常用的一种类方法的定义。顾名思义,实例方法就是只有在使用类创建了实例对象后才可以调用的方法,不能直接使用类名调用。

????????从基本格式来看,类的方法定义比函数定义多了一个参数self,在定义实例方法时self是必需的,也就是说在实例方法中self必须是第一个参数,self代表的是实例,就是通过类创建对象后对自身的引用。在对象内也只有通过self才能调用其他实例变量或方法。

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

? ? ? ? 方法体


四、类对象和实例对象

?????????在Python语言中的对象可分为两类:类对象和实例对象。类对象是在执行class语句时创建的,实例对象是在调用类时创建的。类在每次调用时就会创建一个实例对象,它的对象只有一个,而实例对象则可有多个。类对象和每个实例对象都拥有各自的命名空间,在各自的命名空间存储属于自己的数据。

? ? ? ? 1、类对象

? ? ? ? ? ? ? ? 程序执行class语句时创建一个类对象和变量名(类名称),通过变量名引用类对象。

???????????????? 类也是可执行语句,在导入类模块时,class语句被执行后则会创建一个类对象

? ? ? ? ? ? ? ?? 类中通过赋值语句创建的变量是类的数据属性,类中顶层赋值语句创建的变量是类对象。类中的数据用“对象名.属性名”的格式进行访问。

????????????????④?类中使用def语句定义的函数是类的方法,用对象名.方法名()的格式进行访问。

???????????????? 类中的数据和方法由所有的实例对象所共享。

? ? ? ? 2、实例对象

???????????????? 实例对象是通过调用类对象来创建的,调用类对象的方法同调用函数的方法相同。

???????????????? 每个实例对象都可以继承类对象的属性,得到自己的命名空间。

???????????????③ 实例对象拥有私有属性,类的方法中第一个参数默认为self,表示引用方法的对象实例。在方法中对self的属性赋值才会创建属于实例对象的属性


五、类的方法

????????Python的类中有两个非常特殊的方法:__init__()和__del__()。__init()__方法称为构造方法,__del__()方法称为析构方法。

? ? ? ? 1、构造方法:__init()__

????????__init()__方法会在创建实例对象时自动调用,进而实现对类进行初始化的操作。通过有参构造方法,可以将参数color的值赋值给color属性,这样就保证了color属性的值随参数值的变化而变化。当然,构造方法也可以分为带参不带参两种。

class Phone():
    #无参构造方法
    def __init__(self):
        self.color="黑色"
    def describe(self):
        print("这一部手机是%s的!"%(self.color))
phone1=Phone()
phone2=Phone()
phone1.describe()
phone2.describe()
class Phone():
    #带参构造方法
    def __init__(self,color):
        self.color=color
    def describe(self):
        print("这一部手机是%s的!"%(self.color))
phone1=Phone("黑色")

? ? ? ? 2、?析构方法:__del()__

????????当删除一个实例对象来释放类所占用资源时,Python会默认调用__del()__方法

class Phone()
    #构造方法
    def __init__(self,color):
        self.color=color
    #析构方法
    def __del__(self):
        print("===========del==========")
phone1=Phone("黑色")

运行结果:===========del==========?


案例实施:

class animal:                                        #定义类对对象
    name="panda"                                     #成员变量
    def __init__(self,voice="hello"):                #重载构造函数
        self.voice=voice                             #创建实例(成员)变量并赋初值
    def __del__(self):                               #重载析构函数
        pass                                         #空操作
    def say(self):                                   #重载类的方法
        print("%s的声音是%s"%(self.name,self.voice))
cat=animal("喵喵")                                   #定义实例对象
cat.name="小猫"                                      #实例变量赋值,类属性的赋值
cat.say()                                            #调用类方法
dog=animal("汪汪")
dog.name="小狗"
dog.say()

结果如图所示

文章来源:https://blog.csdn.net/weixin_70754287/article/details/135539901
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。