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

Jer*_*ght 6 python oop procedural-programming

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

Swe*_*per 7

我想说,如果问题可以通过这种方式更轻松地解决并且您的语言支持它,那么这根本就不错。

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

  • 程序说“解决这个问题需要执行哪些步骤?”
  • 功能性说“应该改变什么价值观以及如何改变它们来解决这个问题?”
  • OOP 说“哪些对象需要相互交互以及它们之间需要发送哪些消息来解决这个问题?”

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

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