您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python面向对象封装继承和多态示例讲解

51自学网 2021-10-30 22:46:10
  python
这篇教程Python面向对象封装继承和多态示例讲解写得很实用,希望能帮到您。

面向对象的三大特征:封装,继承,多态

1.封装: 提高程序的安全性

  • 将数据(属性)和行为(方法)包装到类对象中,在方法内部对属性进行对象的外部调用方法。 这样无需关心内部的具体实现。
  • 在python中没有专门的修饰符用于属性的私有,如果属性不希望被访问,前面使用两个下划线

2.继承: 提高代码的复用性

3.提高程序的可拓展性和可 维护性。

1. 封装

我们来看看私有方式的使用:

# 作者:互联网老辛# 开发时间:2021/4/4/0004 22:11class 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:11class 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_noclass Teacher(Person):    def __init__(self,name,age,teachofyear):        super(Teacher, self).__init__(name,age)        self.teachofyear=teachofyearstu=Student('互联网老辛',40,1001)teacher=Teacher('高胜寒',38,10)stu.info()teacher.info()

在Python中还可以支持多继承

比如校长,既能集成person类,又能继承teacher类。

多态的实现

多态就是具有多种形态,意思是,即使不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用的对象类型,动态的决定调用哪个对象中的方法。

# 作者:互联网老辛# 开发时间:2021/4/4/0004 22:11class 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是一种动态语言,静态语言要想实现多态,必须明确继承,然后才能使用,而动态语言只关心是否具有这个方法,关于类不管。

到此这篇关于面向对象的封装,继承和多态的文章就介绍到这了,更多相关面向对象的封装,继承和多态内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


selenium.webdriver中add_argument方法常用参数表
Pytorch 使用tensor特定条件判断索引
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。