gpt4 book ai didi

python - 初学者对python中的类和方法的询问

转载 作者:行者123 更新时间:2023-12-01 05:23:05 24 4
gpt4 key购买 nike

我一直在学习类以及如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com