我一直在学习类以及如何在 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 个方法来简单地添加一些数字。
最佳答案
首先,“self”是对调用该方法的类实例的引用。 Python 在幕后进行翻译
print(p.getTotal())
至
Wallet.getTotal(p)
现在讨论您问题的 OOP 部分。您应该始终编写将来更容易维护的代码。 OOP 只是使代码易于管理/维护的一种方法。在像您所说的这样的小型程序中,代码可维护性不会成为问题,并且使用 OOP 将是一种矫枉过正。一旦您的代码大小开始增长(例如 100,000 行代码),您需要采用策略来保持代码的可维护性。策略一般是(列表不完整,仅作为示例):
- 抽象
- 干燥
- 模块化编程
最后,归根结底取决于程序员的判断,即使用该编程范例,使他/她在保持良好的代码质量的同时保持最高的工作效率。
关于python - 初学者对python中的类和方法的询问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950972/