有过其它编程语言的小伙伴应该知道类具有抽象、继承和多态等性质。而在Python官方文档中的类只有关于继承的描述,多态的描述几乎没有,对抽象虽有提及,但使用的是abc模块。基于此,本文主要学习Python的继承、封装两个性质。
P 继承
继承是指一个类可以继承另一个类的非私有属性和方法。即,子类可以使用父类的非私有属性和方法。
实例演示,如下:
# 定义父类,1个name变量,2个方法(speak和run)。classAnimal(): name = '小花' def speak(self): print(f'{self.name}大喊了一声') def run(self): print(f'{self.name}跑了起来')# 定义子类,不添加任何属性和方法。继承自Animal类classDog(Animal): pass# 实例化子类d = Dog()print(d.name) # 小花d.speak() # 小花大喊了一声d.run() # 小花跑了起来d.name='Tom'd.speak() # Tom跑了起来
上面的例子中,Dog类继承自Animal类,是一种单继承,还可以实现多继承。如下:
# 定义鸟类class Bird(): def fly(self): print('我会飞行')# 定义子类,不添加任何属性和方法。继承自Animal、Bird两个类class Swan(Animal,Bird): pass# 实例化子类 swan = Swan()print(swan.name) # 小花swan.run() # 小花跑了起来swan.speak() # 小花大喊了一声swan.fly() # 我会飞行
可以看到Swan类只是继承了Animal、Bird两个类就可以实现父类的功能,将其功能进行了合并。继承是类最主要的特性,必须要掌握。
P 关于封装
封装实际上是一种代码管理技术,前文的函数已经实现代码逻辑封装复用。为什么类中又专门提到封装呢?这是因为类不仅可以实现逻辑封装,还能实现数据的封装,实现逻辑和数据的整合。其中,数据指类的属性(或者说是类变量),逻辑是指类的方法。
类的定义,只是定义了一个类模版,在实例化前它不具有任何功能和能力,也就是说其无法操作数据。类的实例化是实现数据操作和功能的必要过程。当类实例化后,其属性和方法都被加载到内存中,并开始工作,此时我们称该实例化的类为对象。而且每个类可以有N个实例化对象,可以分别操作对象内各自的数据而互不影响。
-------------------------它是数字世界里的一把杀猪刀
却总能巧夺天工
它的世界是纯粹0、1组合
却总能创造无尽幻想
......
本公众号关注数据价值分析、编程学习,将不定期更新社会热点数据分析结果、编程技巧,分享数据分析工具、方法、学习等内容,欢迎有兴趣的小伙伴加入。