python - 在 Python 中混合 OOP 和过程编程(或一般混合编程风格)是不好的做法吗

标签 python oop procedural-programming

<分区>

我一直在研究解决魔方的程序,但我发现自己不确定一些事情。首先,如果我有一堆具有通用应用程序的功能(例如,清除屏幕),并且不知道我是否应该将它们更改为类内部的方法。我的部分代码是面向对象的,另一部分是过程性的。这是否违反了 PEP8/这是一种不好的做法吗?我想从更广泛的角度来看,混合两种编程风格(OOP、函数式、过程式等)是不是一个坏主意?

最佳答案

如果问题可以通过这种方式更轻松地解决并且您的语言支持它,我会说它一点也不差。

编程范式只是解决问题的不同方法:

  • 程序说“解决这个问题需要执行哪些步骤?”
  • Functional 说“应该转换哪些值,应该如何转换才能解决这个问题?”
  • OOP 说“哪些对象需要相互交互以及它们之间需要发送哪些消息来解决这个问题?”

当您将问题分解成更小的问题时,您可能会发现问题的某些部分可以更容易地以功能方式解决,而其他部分则以过程方式解决。完全有可能出现这样的问题。

Python 主要是程序化的,相当面向对象,并且具有函数特性(即functools)。它不像 Haskell 那样功能强大,也不像 C# 那样面向对象,但它允许您在某种程度上使用这些范例。

关于python - 在 Python 中混合 OOP 和过程编程(或一般混合编程风格)是不好的做法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441017/

相关文章:

python - 如何使用 boost.python 将预填充的 "unsigned char*"缓冲区传递给 C++ 方法?

python 从表中选择列,其中列 = self.variable

java - 不同 Java 类型之间的转换器

django - Python/django.db : How to create a generic class without hardcoded Meta. db_table?

c++ - 将 C++ 类转换为过程 API : common way of replacing member variables?

php - 使用 mysql 数据库中的数据在 html 表中显示给定时间的事件并发进程数

Python单元测试: How to initialize selenium in a class and avoid having the browser opening twice?

python - 当脚本仍在运行时终止守护线程

python - Flask-sqlalchemy - 计算请求 REST 端点(或数据库记录)的次数

sql - 编写/调试复杂 PL/pgSQL 查询的最佳实践