【Python从零到壹】面向对象的封装,继承和多态
【摘要】 面向对象的三大特征:封装,继承,多态
文章目录
1. 封装2. 继承多态的实现
封装: 提高程序的安全性
将数据(属性)和行为(方法)包装到类对象中,在方法内部对属性进行对象的外部调用方法。 这样无需关心内部的具体实现。在python中没有专门的修饰符用于属性的私有,如果属性不希望被访问,前面使用两个下划线
继承: 提高代码的复用性提高程序的...
面向对象的三大特征:封装,继承,多态
- 封装: 提高程序的安全性
- 将数据(属性)和行为(方法)包装到类对象中,在方法内部对属性进行对象的外部调用方法。 这样无需关心内部的具体实现。
- 在python中没有专门的修饰符用于属性的私有,如果属性不希望被访问,前面使用两个下划线
- 继承: 提高代码的复用性
- 提高程序的可拓展性和可 维护性。
1. 封装
我们来看看私有方式的使用:
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 22:11
class Student: def __init__(self,name,age): self.name=name self.__age=age def show(self): print(self.name,self.__age)
laoxin=Student('互联网老辛',38)
laoxin.show()
print(laoxin.name)
print(laoxin.__age)
私有属性如何被访问呢?
可以通过下面的形式来访问
print(laoxin.Student_ _ age)的形式进行访问
但一般情况下,我们看到私有方法,就尽量不要访问了。
2. 继承
语法格式:
class 子类类名(父类1,父类2)
pass
- 如果一个类没有继承任何类,默认集成object
- python支持多继承
- 定义子类时候,必须在其构造函数中调用父类的构造函数
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 22:11
class Person(object): def __init__(self,name,age): self.name=name self.age=age def info(self): print(self.name,self.age)
class Student(Person): def __init__(self,name,age,sut_no): super().__init__(name,age) self.sut_no=sut_no
class Teacher(Person): def __init__(self,name,age,teachofyear): super(Teacher, self).__init__(name,age) self.teachofyear=teachofyear
stu=Student('互联网老辛',40,1001)
teacher=Teacher('高胜寒',38,10)
stu.info()
teacher.info()
在Python中还可以支持多继承
比如校长,既能集成person类,又能继承teacher类。
多态的实现
多态就是具有多种形态,意思是,即使不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用的对象类型,动态的决定调用哪个对象中的方法。
# 作者:互联网老辛
# 开发时间:2021/4/4/0004 22:11
class Animal(object): def eat(self): print("动物需要吃东西")
class Dog(Animal): def eat(self): print('狗吃骨头') #重写方法
class Cat(Animal): def eat(self): print('猫吃鱼')
class Person: #没有集成任何类 def eat(self): print('人吃植物')
def fun(obj): obj.eat()
fun(Cat())
fun(Dog())
fun(Animal())
fun(Person()) #但是他也能调用方法
原因:
Python是一种动态语言,静态语言要想实现多态,必须明确继承,然后才能使用,而动态语言只关心是否具有这个方法,关于类不管。
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/115434301
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)