云计算百科
云计算领域专业知识百科平台

Python学习[6]

一,类的对象

    1.对象的基本概念:Python 中 一切皆对象,对象是程序的基本组成单元,是 数据(状态) 和 操作数据的行为 的封装体。

    2.创建类:创建类是指提前为某一类事物创建方法,例如列表这种类中具有append(),copy(),remove(),reverse()等方法。使用形式如下:

class 类的名称(): #class创建一个类,类名与函数名命名规则相同,为了区别类名首字母大写
'''类的说明文档''' #本行说明类的功能(可有可无)
def __init__(self,参数1,参数2…): #初始化
代码块1
def 方法名1(参数3,参数4…): #创建类中方法
代码块2
def 方法名3(参数5,参数6…):
代码块3

import time
class Microwave (): #创建一个Microwave的类
'''微波炉类的文档说明'''
def __init__(self,name): #保留字def创建类Microwave的初始化方法,并接收参数name
self.name=name
self.time=time.strftime ("%Y-m-&d %H:%M:%S", time.localtime()) #获取当前名字与时间
def print_info (self): #获取微波炉信息
print('微波炉的名字:',self.name,'\\n','购买时间:,self.time')
def bread (self,temp=3): #模拟微波炉提醒功能
self.temp = temp
print("开始烤面包,时长:",self.temp,'分钟')
pass

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

调用对象:
对象=类名(实参)

调用对象的方法:
对象。方法名(参数)

      以上述对象(微波炉)为例

a.Microwave=('zhangsan')
a.print_info()
a.bread()

执行结果:
微波炉的名字: zhangsan
购买时间: 2026-1-16 19:45:49
开始考面包,时长: 3 分钟

二,类的属性

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

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

对象.属性

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

    如果需要获取对象的属性temp一必须要在调用了bread()方法之后才能获取,如下调用:

a=Microwave('zhangsan')
a.bread()
print(a.temp)

执行结果如下:
开始烤面包,时长: 3 分钟
3

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

import time
class Microwave():
'''微波炉类的文档说明'''
def __init__(self,name):
self.name=name
self.time=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
self.bread()
def print_info(self):
print('微波炉的名字:',self.name,'\\n','购买时间',self.time)
def bread(self,temp):
self.temp=temp
print("开始烤面包,市场:",self。temp,'分钟')
pass

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

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

    示例代码(通过类创建对象并获取属性):

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

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

代码执行结果:
开始烤面包,时长:3分钟
zhangsan 2026-01-17 15:19:00
3

    输出的第1行内容为初始化方法__init__()调用self.bread()方法时输出的结果。
    类中的方在调用其他方法时也可以直接传递参数。
    示例代码(创建一个类Microwave):

import time
class Microwave ():
'''微波炉类的文档说明'''
def __init__(self,name):
self.name=name
self.time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.bread(10)
def print_info (self):
print('微波炉的名字:',self.name,'\\n','购买时间:',self.time)
def bread (self,temp=3):
self.temp = temp
print("开始烤面包,时长:",self.temp,'分钟!')
pass

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

执行结果为:
开始烤面包,时长: 10 分钟!
zhangsan 2026-01-18 19:04:14
10

    3.属性的修改:属性的值可以通过对象来进行修改

a = Microwave ('zhangsan') #使用类Microwave创建了对象a,创建过程中通过初始化方法使得a的属性获得了相应的值。
a.name = 'lisi'
a.time = '2026年6月7日' #直接对属性name和time进行新的赋值,使新值覆盖原来的值,执行代码后输出a的属性值,该属性值与类Microwave定义中的属性值不同。
print(a.name,a.time)

执行结果如下:
lisi 2026年6月7日

    4.获取类的文档说明:获取类的文档可以使用__doc__属性实现。

代码示例:
a = Microwave ('zhangsan')
print(a.__doc__)

执行结果:
微波炉类的文档说明

三,类的继承

当创建好一个类,如果需要在类Microwave的基础上添加“增加”或“修改”功能且继续保留原来的类Microwave(不改变原来的基础类),可以使用继承的方式。继承是指在原类的基础上创建一个新类,而新类会自动获取原类中的所有属性和方法。原类称为父类,新类称为子类。

    1.类的继承方式:在创建新类时,class后面的括号用于继承父类且不接收参数。

新类(子类)继承父类的使用形式如下:
class 子类名(父类名):
def __init__(self,子参数):
super().__init__(父参数)代码块
def 方法1()…

使用继承方式创建新类的形式,与直接创建新类的形式有以下两点区别。

    第1点,新类中子类名后面的括号中需要写入父类名,表明该新类继承自哪个父类,且父类的代码必须要写在子类的前面,否则程序将无法找到对应的父类进行继承。

    第2点,在新类初始化方法中,代码块的首行需要加入super().__init__(父参数),用于表明将父类中的属性的方法与新类关联起来,且父参数是父类初始化时的形参。新类初始化方法中的子参数也需要包含父类的父参数。

#父类
import time
class Microwave ():
'''微波炉类的文档说明'''
def __init__(self,name):
self.name=name
self.time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def print_info (self):
print('微波炉的名字:',self.name,'\\n','购买时间:',self.time)
def bread (self,temp=3):
self.temp = temp
print("开始烤面包,时长:",self.temp,'分钟!')
pass

#子类
class New_Microwave(Microwave):
'''从Microwave继承的子类'''
def __init__(self,name,light):
super().__init__(name)
self.light=light

#使用子类
a=New_Microwave('zhangsan',100)
a.print_info()

#代码执行结果:
微波炉的名字: zhangsan
购买时间:2026-01-18 19:41:16

#在使用类的继承方式时需要注意以下两点。
#第1点,通过子类创建的对象可以使用子类和父类中的所有属性和方法。
#第2点,通过父类创建的对象只能使用父类中的属性和方法,而不能使用子类中的属性和方法。

a=Microwave('zhangsan')
print(a.light)
#使用时会报错,light是在子类中定义的,Microwave是定义的父类

    2.在子类中添加方法:子类中还可以添加新的方法,但在子类中新创建的方法无法在父类中使用,而父类中创建的方法可以在子类中使用。

示例代码:
class New_Microwave(Microwave):
'''从Microwave继承的子类'''
def __init__(self,name,light):
super().__init__(name)
self.light=light
def set_light(self,add_light):
self.light=self.light+add.light
print("当前灯光强度:",self.light)
pass

a=New_Microwave('zhangsan',100) #创建了一个子对象,调用了子类方法set_light
a.set_light(50)
#执行结果为:当前灯光强度: 150

b=Microwave('zhangsan') #创建了一个对象b但父类中没有set_light()方法,所以会报错
b.set_1ight (50)

    3.覆盖父类中的方法:当需要对父类中的方法进行修改、调整时,可以通过子类重新编写父类中的方法。在执行子类中的方法时会自动覆盖父类中的相应方法。

示例代码(通过子类覆盖父类Microwave中的print_info()方法):
class New_Microwave (Microwave) :
'''从Microwave继承的子类'''
def __init__(self,name,light):
super().__init__(name)
self.light = light
def print_info (self):
print('微波炉的名字:',self.name,'\\n','购买时间:',self.time,'\\n','当前灯光强度:',self.
light)

    在子类New_Microwave中,代码创建了一个名为print_info的方法,其代码块中增加了当前灯光强度属性。在父类Microwave中也有print_info()方法,通过子类New_Microwave创建的对象会使用子类New_Microwave中的print_info()方法代码,而通过父类Microwave创建的对象会使用父类Microwave中的print_info()方法代码。

#示例代码:
a=New Microwave('zhangsan',100)
a.print_info()

#代码执行结果:
微波炉的名字: zhangsan
购买时间: 2026-01-18 20:19:09
当前灯光强度: 100

四,导入其他文件中的类

    1.导入类:当需要在d.py文件使用c.py文件中的类Microwave时,其使用方法与入其他模块中的函数的方法基本一致,且必须保证两个文性处在同一个文件夹内,否则将无法导入文件中的内容。假设c.py文件和d.py文件都在一个文件夹中,下面所示的代码为c.py文件和d.py文件中的代码。

#c.py
import time
class Microwave ():
'''微波炉类的文档说明'''
def __init__(self,name):
self.name=name
self.time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def print_info (self):
print('微波炉的名字:',self.name,'\\n','购买时间:',self.time)
def bread (self,temp=3):
self.temp = temp
print("开始烤面包,时长:",self.temp,'分钟!')
pass

#d.py
import c
c=c.Microwave('zhangsan')
a.print_info()

    接下来将以这两个文件为例来介绍4种导入其他文件中的类的代码形式:
    第1种,导入文件。
    由于d.py代码文件中使用import导入了c.py文件,因此后面在使用类Microwave时,需要在Microwave前面加上引导符“c.”,d.py文件的代码如上所示。

    第2种,导入文件中的指定类,在d.py文件中的代码如下:

from c import Microwave
a= Microwave('zhangsan')
a.print_info()

    文件中存在多个类时,为避免因导入太多类而导致名称冲突,可以选择导入指定类

    第3种,导入文件中的全部类,在d.py文件中的代码如下:

from c import *
a = Microwave ('zhangsan')
a.print_info()

    第4种,给导入的类设置别名,在d.py文件中的代码如下:

from c import Microwave as Mw
a = Mw('zhangsan')
a.print_info()

    2.在类中使用另一个类的方法:如果在定义一个类时需要使用到另一个类中的方法,可以参考前面创建类对象和使用类方法的步骤。例如在计算机存在c.py,d.py的文件夹中存在3个代码文件,分别为e.py、f.py、g.py代码文件。

示例代码(e.py代码文件):
'''用于连接手机蓝牙'''
class Bluetooth():
def __init__(self,yorn):
self.yorn = yorn
def con(self):
if self.yorn == 'y':
print('开始连接手机蓝牙')
elif self.yorn == 'n':
print('断开手机蓝牙')
else:
print('设置错误')

    该代码定义了类Bluetooth,用于模拟连接手机蓝牙。其中第3行代码中的__init__()初始化方法需要接收个参数yorn。第6行代码创建了con()方法,用于模拟判断当前是否需要连接手机蓝牙。  

import time
import b
class Microwave():
'''微波炉类的文档说明'''
def__init__(self,name):
self.name=name
self.time=time.strftime("%Y-%m-%d %H:%M:%s", time.localtime())
def print info(self):
print('微波炉的名字:',self.name,'\\n','购买时间:',self.time)
def bread(self,temp=3):
self.temp=temp
print("开始烤面包,时长:",self.temp,'分钟!')
pass
def con_bluetooth(self,yorn)
bluetooth=b.Bluetooth(yorn)
bluetooth.con()

    该代码定义了类Microwave,其中第2行代码使用import e导入了e.py代码文件。第14行代码在类Microwave中定义了con_bluetooth(方法,用于模拟手机通过蓝牙控制微波炉。而在e.py代码文件中提供了用于操作手机蓝牙的类Bluetooth,因此第15行代码通过类Bluetooth创建了蓝牙对象buetooth,第16行代码执行了蓝牙对象中的con()操作,从而实现了模拟手机蓝牙和微波炉的连接

    示例代码(g.py代码文件):

import f
a=f.Microwave('zhangsan')
a.print_info()
a.con_bluetooth('y')

    该代码为主程序代码,其中第2行代码使用c.py代码文件中的类Microwave创建一个微波炉对象a。第3行大码使用了类Microwave中的print_info()方法。第4行代码使用了类Microwave中的con_bluetooth()方法,传递的参数为字符y,表示需要连接手机蓝牙。
    代码执行结果:

微波炉的名字: zhangsan
购买时间: 2026-01-18 21:08:16
开始连接手机蓝牙

赞(0)
未经允许不得转载:网硕互联帮助中心 » Python学习[6]
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!