如何理解 python 里的类-对象,和函数

作为一个自学菜鸟,我一直搞不明白 python 里类和函数有什么区别,看过一些教程和视频,依然不懂

最近开通了gpt plus,在我的穷追不舍下,gpt4o举了一堆例子,我终于搞明白了,在此先分享一些草稿,过几天完善一下

以下都是个人理解,官方解释请看教科书
首先,类和函数没什么区别,类其实就是一堆函数的总和,你完全可以写一堆函数来实现一个类的功能

但是类规定了对象,类里面的函数在定义类的时候就写死了,未来你只能通过类提供的函数去操作这些对象。而如果用函数来实现这个类的功能,你定义的变量可以被未来任意的其他函数操作,这将带来很多潜在的麻烦

所谓面向对象编程,编的就是类里的各种函数,构建一个框架让别人可控范围内操控对象,这样比较安全,比较好理解代码,但也比较慢

而面向过程编程,就是只用函数来实现,好处是快

这里应该有个概念是面向对象还是面向过程。

如果是面向对象的话,就会有一堆和对象有关的定义了,包括有,多态,继承这些概念。

对比下 Java 这个讨论最多的面向对象语言就知道了。

Python 和 JavaScript 比较类似,看起来有对象的概念,但不是完全按照面向对象来弄的。

比如说,你要定义一个对象,定义好属性,然后还需要把这个对象来实例化然后才能用,Java 中会需要用一个 new 关键字。

对 Python 来说这个太复杂了,也没有必要,所以 Python 就借用了面向对象的很多概念,但我觉得 Python 算不上完全的面向对象,和 JavaScript 有点类似。

时代变化

随着时代的变化,这 2 种方式之间的边界越来越模糊了。

Java 8 以后也可以进行函数式编程了。

所以大致知道下写法就好了。

java和JavaScript基本不了解,我就不多说了。

单说 python 的话,确实面向过程和面向对象经常是混合的,之前看教程老生提这些概念让我很迷糊,所以专门学习了一下。

2 Likes

呃 你的理解是错误的

面向过程不一定就比面向对象快,这俩玩意都是编程思想而不是结果,最后被编译器一通优化(我说的C++)下来机器码可能是一样的效率,甚至面向对象说不定还能更快

这两者关键的区别在于思想的抽象,面向过程就是列出一种通用的,能把问题解决的过程,然后把变量代入到过程中求解。面向对象是将问题抽象为对象之间的互相转化与操作。而且不同的风格是可以互相混合的。

只用函数实现应该是函数式编程()

1 Like

如果你是速成当我没说。如果你是想要弄懂背后的原理,可以先试着用过程式的东西,完全不管对象就不用那些class的东西,去写一些代码

然后很快在复杂问题中你就会遇到过程式的缺陷,然后再去看面向对象的设计理念就会感受到面向对象的好处(主要是编码的方便,而不是最终速度的优劣)

1 Like

感谢大佬指教,对概念的认识更深了一步👍

我就是个爱好者哈哈,能大概知道怎么回事,可以之后听懂教程里提到的类和对象就满足了。