初学者';关于python中类和方法的查询

初学者';关于python中类和方法的查询,python,class,object,methods,Python,Class,Object,Methods,我一直在学习类以及如何用python进行“面向对象”编程。然而,我仍然难以理解类和方法背后的一些概念。我知道类作为一个模板来创建一个“对象”,但是这个模板到底做什么呢?使用的“self”参数是什么?例如,我对以下代码的功能感到困惑,因为没有类就无法完成这些功能: class Money: def __init__ (self, v =0): self.value = v def getValue (self): return self.value

我一直在学习类以及如何用python进行“面向对象”编程。然而,我仍然难以理解类和方法背后的一些概念。我知道类作为一个模板来创建一个“对象”,但是这个模板到底做什么呢?使用的“self”参数是什么?例如,我对以下代码的功能感到困惑,因为没有类就无法完成这些功能:

class Money:
    def __init__ (self, v =0):
        self.value = v
    def getValue (self):
        return self.value
class Wallet:
    def __init__ (self, b = 0):
        self.balance = b
    def addMoney (self, c):
        self.balance += c.value
    def getTotal(self):
        return self.balance

c1 = Money(50)
c2 = Money(100)
c3 = Money(5)
c4 = Money(20)

p = Wallet()
p.addMoney(c1)
p.addMoney(c2)
p.addMoney(c3)
p.addMoney(c4)
print(p.getTotal())

使用一些简单的
raw_input()
函数(请求c1、c2、c3、c4等)和一个将钱相加并返回钱的函数,这不是很容易做到的吗?这不可能是一种与这个类做同样事情的方法吗,但是代码行更少,并且不需要编写5个方法来简单地相加一些数字。

您创建了一个多么漂亮的稻草人论点! 您正在使用一个简单的示例批评面向对象编程

OOP是一种组织代码的方法,对大型程序很有用

有许多复杂的结构可以用对象表示,这些对象现在是日常编程语言(模式)的一部分。在这里你可以看到几个


我建议您在一年内真正学习并尝试使用OOP,然后在对您有意义的地方使用它。

是的,只使用一个函数来增加资金会更简单,但此脚本只是为了演示python中面向对象编程的能力。此外,为了改进此脚本,可以添加一个简单的raw_input()来获取金额。self参数还用于给某个“对象”一个属于其自身的变量,也称为局部变量。

首先,“self”是对调用该方法的类实例的引用。在幕后,Python进行翻译

    print(p.getTotal())

现在进入问题的面向对象部分。您应该始终编写更易于维护的代码。OOP只是使代码易于管理/维护的一种方法。在小程序中,如您所说的代码可维护性并没有成为一个问题,而使用OOP将是一种过分的杀伤力。一旦代码大小开始增长(比如100000行代码),您就需要采用策略来保持代码的可维护性。策略通常是(列表不完整,仅举个例子):

  • 抽象
  • 干的
  • 模块化编程

最后,它归结为程序员的判断,即在保持良好代码质量的同时,使用最高效的编程范式。

这只是一个示例,展示了面向对象编程的一些特性。
    Wallet.getTotal(p)