一片文章带你了解PYTHON中类的概念

对象的基本概念

在了解什么是类之前,我们先要知道什么是“对象”!

对象是指类中的具体实例。例如整数中的12是整数这一类数据中的一个具体数值对象。
比如字符串'hello world'是字符串这一类数据中的一个具体对象。对字符串'hello world"进行操作即一种面向》。又例理方法,例如"he11o worid'.spiit()表示对字符串'hello world'对象进行split()方法操作。

创建类

创建类是指提前为某一类事物创建方法,

class 类的名称():
        def init__(self,参数1,参数2,...):

                代码块1
        def 方法名1(参数3,参数4....):

                代码块2
        def 方法名2(参数5,参数6,...):

                代码块3

        在该使用形式中,第1行内容的class是Python中的保留字,用于表明此处是创建一个类,class后面是类的名称,类的命名规则与变量的命名规则相同,为了区别于函数,类名称的首字母一般要大写。类名称后有一个括号,括号后有一个冒号。

        第2行内容是一段由三引号引起来的字符串,主要用于创建类的功能说明和方法的使用说明,便于其他用户使用该类。由于此字符串并没有赋值给任何变量,因此此字符串不会有其他的操作,此字符串也可以省略不写

        第3行内容是类中的一个初始化方法,是一个特殊方法,其创建方法与函数的创建方法基本相同,也使用保留字def,但类初始化方法要使用固定的方法名__init__(前后各两个下画线,共4个)来表示,且括号中的第1个形参变量名为self,self表示类自己本身,就好比人类会用“我”这个字表示自己本身。self在形参中须位于第1个。括号后面有一个冒号,表示下面缩进的内容隶属于类初始化方法,代码块1即类初始化方法的具体代码。

        第5行内容是创建的类中的方法,例如列表中的append()方法。其创建方法与函数的创建方法相同,都使用保留字def创建,def后面为方法名,形参是使用该方法时所接收的参数。其中代码块2是实现该方法的具体代码。

注:一个类中可以创建多个方法,因此还可以继续创建方法2、方法3等

import time02 class Microwave():

        def init_(self,name):
                self.name=name
                self.time=time.strftime("gy-$m-8d H:&M:$",time.localtime())

        def print info(self):
                print(’微波炉的名字:',self.name,’\n’,'购买时间:',self.time)

        def bread(self,temp=3):
                self.temp =temp
                print(”开始烤面包,时长:",self.temp,'分钟')

                pass

第1行和第6行代码用于获取当前时间。

第2行代码创建了一个名为Microwave的类。
第4行代码使用def保留字创建了类Microwave的初始化方法,并且需要接收一个参数name。

第5、6行代码中的self.name和self.time表示给类Microwave创建名字属性和时间属性(name和time等效为变量名),就好比“人”这一类中的每个“我”都有自己的名字和出生日期信息,这些信息即属于“人”这一类的属性。在Python语言中使用se1.属性名表示类的属性。

第5行代码中微波炉的名字是通过初始化类时的实参传递进来的,

第6行代码中微波炉的购买时间是初始化类的那一刻的时间值。

第7行代码创建了一个方法print_info(),用于获取微波炉的属性信息,该方法中的形参为self,其作用为将初始化的self属性信息传递到print_info()方法中,因此在print_info()方法中可以继续使用self属性,这是因为函数内部的变量是局部变量,这里创建的方法的功能和函数的功能类似,如果需要在其他方法中使用self属性,也需要将self属性信息传递进方法中。
第9行代码创建了一个方法bread(),用于模拟微波炉的提醒功能。第12行代码中的pass是一个保留字,用于表明此处还有代码,但暂时没有编写(本小节主要介绍类的知识点,暂时没有编写后续启动微波炉开始烤面包的代码。
创建好类后,如果类的定义后面没有调用该类的代码,程序将不会执行该类,这与函数的定义和调用原理相同。类本质上是多个具有不同功能的函数的集合,而这些函数是为同一类数据服务的。例如类Microwave中定义的方法本质上也是函数,这些函数都是为微波炉这一类产品提供服务的。例如在列表类型数据中定义的append()、copy()、remove()、reverse()等方法都是为列表类型数据提供服务的。

创建对象

在使用类和类中的方法时,需要通过调用类来创建类的对象。其使用形式如下:

对象 =类名(实参)

其中类名要与定义的类名称相同,运行程序时括号中的实参会传递给类中的_imni.-_(0)初始化方法。对象与用户自定义的变量相同、对象名也需遵守变量名的命名规则(见2.2.1节)创建类的对象后,就可以通过对象名使用类中的方法。其使用形式如下

对象.方法名(参数)

注:使用类中的方法前必须要先通过类创建对象!

创建了类对象后,接下来就可以使用该类中的所有方法。

类的属性

类的属性是指给每个对象赋予的标签信息。当使用类创建了对象后,会通过初始化类的属性使得每个对都具有自己的属性信息(例如用户的微波炉的购买时间、名称等),类的属性信息可以通过对象获取(例如购买的微波炉的信息)。

对象.属性

在使用属性前需要先创建一个具体的对象,因为属性是每个具体对象的标签信息。使用性时无须在最边加上括号,只有方法和函数需要加上括号。
 

a = Microwave('zhangsan')

print(a.name,a.time)

print (a.temp)

第1行代码使用类Microwave创建对象a,此时对象a会具有执行初始化方法__init__()后的属性信息。第2行代码输出对象a的属性name和time。
第3行代码输出对象a的属性temp,但由于属性temp在类的定义中并不属于__init__()初始化方法,它是在bread()方法中创建的,因此a.temp无法直接获取对象a的属性temp。

初始化其他方法

在类的定义中,__init__()初始化方法也可以调用类中定义的其他方法,
 

import time

class Microwave():

        def __init__ (self,name):

                self.name=name

                self.time=time.strftime("名-名m-名d H:&M:&$",time.localtime())

                self.bread()

         def print info(self):

                print(’微波炉的名字:',self.name,'\n','购买时间:',self.time)

        def bread(self,temp=3):

                self.temp = temp

                print(”开始烤面包,时长:",self.temp,'分钟')

                pass

类Microwave的-_init__()初始化方法中的self,bread()表示执行类Microwave中的bread()方法在初始化类的同时也执行了bread()方法,即可获取self.temp属性信息。

类中的任意方法都可以调用类中的其他方法,不仅限于__init__()方法。类中的方法在调用类中的其他方法时的使用形self,方法名(参数),其中self表示调用的方法是类自己的。

a= Microwave('zhangsan')
 print(a.name,a.time)
 print(a.temp)

由于类定义的__init__()方法中调用了bread()方法,因此第3行代码可以获取a的属性temp。

代码执行结果:

开始烤面包,时长:3分钟

zhangsan 2022-09-06 15:19:00

3

输出的第1行内容为初始化方法__init__()调用self.bread()方法时输出的结果

注:类中的方法在调用其他方法时也可以直接传递参数!

属性的修改

属性的值可以通过对象来进行修改。

a= Microwave('zhangsan')
a.name = 'lisi'
a.time=2022年6月7日
pr治nt(a.name,a.time)

第1行代码使用类Microwave创建了对象a,创建过程中通过初始化方法使得a的属性获得了相应的值。第2、3行代码直接对属性name和time进行新的赋值,使新的值覆盖原来的。执行代码后输出a的属性值,该属性值与类Microwave定义中的属性值不同。

你可能感兴趣的:(一片文章带你了解PYTHON中类的概念)