浅谈Python内部类

浅谈Python内部类,第1张

什么是内部类?

我想类大家应该都非常熟悉,我们平时使用的类大致包含__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~~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730633.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存