什么是内部类?
我想类大家应该都非常熟悉,我们平时使用的类大致包含__init__
函数,以及一些对象的操作函数。大致是下面这样
class car():
# 初始化
def __init__(self,speed):
self.speed = speed
# 设定速度
def set_speed(self,speed):
self.speed = speed
# 移动
def move(self):
print('move')
上面是一个最简单的类,我们定义了一个名叫car
的类,它具有速度这个属性,还有设定速度和移动这两个函数。
好,现在提出第一个问题,如果我想创建一个类,它既有car
的功能,并且还具有自己的特殊功能和属性,该怎么办呢?
对了! 了解类的就会知道这里要使用继承
,下面也举一个小栗子🌰
class tesla(car):
def __init__(self,speed,model):
super(tesla,self).__init__(speed)
self.model = model
#添加一个刹车功能,虽然失灵
def brake(self):
print('can not brake')
这里我们可以看到tesla
这个类继承了car
这个类的所有功能,并且还添加了model
属性和brake
函数。这个简单的栗子说明了我们一般使用类的逻辑。
而内部类的结构大概是这样的
class 外部类():
def __init__(self):
return None
class 内部类():
def __init(self,外部类):
return None
所以,为什么要用内部类
乍一看,好像也没什么区别,只不过把类放在了内部,但是有的时候我们并不像创建一个完全全新的类,不是上文中class 汽车-class 特斯拉
的关系,而是类似于class 汽车- class 车门
的关系。在创建这种从属关系的类时,我们就可以使用内部类!
内部类的一个应用示例
下面是内部类的一个示例,我们这里用了汽车与车门的关系来说明,一辆车一般有四个车门,但是车门和汽车又是从属关系,所以我们用内部类可以很好的展示这个逻辑。
冷知识:下面的代码可以运行哦
class 汽车():
def __init__(self,名称):
self.名称 = 名称
class 车门():
def __init__(self,汽车,状态):
self.所属车辆 = 汽车.名称
self.状态 = 状态
def 关门(self):
self.状态 = '关闭'
print('门',self.状态)
def 开门(self):
self.状态 = '打开'
print('门',self.状态)
测试代码:
汽车一号 = 汽车('特斯拉')
车门一号 = 汽车一号.车门(汽车一号,'打开')
车门二号 = 汽车一号.车门(汽车一号,'关闭')
print(车门一号.所属车辆)
print(车门一号.状态)
print(车门二号.所属车辆)
print(车门二号.状态)
输出:
特斯拉
打开
特斯拉
关闭
这里我们为一辆特斯拉创建了两个车门
,车门
的从属车辆
显示为特斯拉
,但是每个门又有自己的状态,很多时候我们确实需要创建这种关系的类。
希望可以帮到你
PEACE~~