一,类的对象
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
开始连接手机蓝牙
网硕互联帮助中心





评论前必须登录!
注册