详解Python:面向对象编程

作者:Tendency1060 时间:2023-10-26 16:17:53 

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度

python和java都是面向对象的语言。面向对象编程的特点数据封装、继承和多态

1.类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
在python中,定义类同样也是使用class关键字,class后面紧跟着的是类名,需要开头大写,之后的括号里表示的是继承的哪个类,即它的父类。


class Student(object):
 pass

我们可以自由地给这个变量绑定属性


>>>nick.name = 'Liu Ling Hao'
>>>nick.name
'Liu Ling Hao'

而之后定义的不同的函数则是方法。总结来说对象=属性+方法
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。此时就需要用到比较特殊的__init__方法。(int 前后各有两个下划线)
__init__方法的第一个参数永远是self,表示创建的实例本身。


class Student(object):
 def __init__(self, name, score):
   self.name = name
   self.score = scor
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59

当有了__init__方法之后,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数

2.封装,继承和多态

面向对象编程的一个重要特点就是数据封装。
就像上面例子中的name和score,我们可以直接在类的内部定义的函数去访问,,比如可以添加一个数据或者对于一个列表进行排序,我们可以实现,但是我们并不知道它的内部是通过如何调节而实现的。

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

继承的好处就是获得了父类的全部功能,对于子类而言,可以在父类的基础上接着写,更加方便


class Person(object):
 def idea(self):
   print('study is happy')
class Liu(Person):
 pass
liu =Liu()
liu.idea

study is happy

当然子类如果有和父类同样的方法时会自动覆盖掉父类的

多态:不同对象对同一方法响应不同的行动


>>>class Nick1:
 def name(self):
     print("我是1")
>>>class Nick2:
 def name(self):
  print("我是2")
>>>a = Nick1()
>>>b = Nick2()
>>>a.name
我是1
>>>b.name
我是2

使用的函数名虽然一样但是实现并不一样。


def run(animal):
 animal.run()
 animal.run()
 >>> run(Animal())
Animal is running...
Animal is running...
>>> run_twice(Dog())
Dog is running...
Dog is running...

多态的好处就是,当我们需要传入Dog或者其它动物时,我们只需要接收Animal类型就可以了,因为Dog都是Animal类型,然后,按照Animal类型进行操作即可。由于Animal类型有run()方法,因此,传入的任意类型,只要是Animal类或者子类,就会自动调用实际类型的run()方法,这就是多态

以上所述是小编给大家介绍的Python面向对象编程详解整合网站的支持!

来源:https://blog.csdn.net/qq_43613144/article/details/89075989

标签:Python,面向对象
0
投稿

猜你喜欢

  • mysql安装图解 mysql图文安装教程(详细说明)

    2024-01-28 08:37:50
  • Javascript学习笔记之数组的遍历和 length 属性

    2024-04-18 10:53:43
  • 在SAE上部署Python的Django框架的一些问题汇总

    2023-12-17 19:08:25
  • Centos7.4环境安装lamp-php7.0教程

    2023-11-16 03:07:24
  • Python如何实现感知器的逻辑电路

    2021-01-09 00:41:38
  • Python 数据可视化神器Pyecharts绘制图像练习

    2021-01-27 17:42:04
  • NopCommerce架构分析之(八)多语言支持

    2024-05-13 09:15:53
  • Vue.js框架实现购物车功能

    2024-04-30 10:46:59
  • Python时间差中seconds和total_seconds的区别详解

    2022-10-04 15:00:49
  • Python中扩展包的安装方法详解

    2021-09-19 23:35:46
  • 怎样设计网站首页?(解答)

    2007-11-04 18:56:00
  • 对Tensorflow中的矩阵运算函数详解

    2021-04-29 12:08:53
  • 使用K.function()调试keras操作

    2022-08-03 05:07:31
  • Python拼接字符串的7种方法总结

    2022-10-28 08:38:00
  • Access 导入 MSSQL 2000/2005 数据库工具

    2008-10-22 13:49:00
  • Python根据欧拉角求旋转矩阵的实例

    2022-09-03 15:11:00
  • golang指数运算操作

    2024-01-30 22:35:53
  • Django REST 异常处理详解

    2023-06-19 02:40:34
  • Mysql导入导出工具Mysqldump和Source命令用法详解

    2024-01-23 19:46:52
  • 详解python-图像处理(映射变换)

    2023-12-23 06:43:35
  • asp之家 网络编程 m.aspxhome.com