【问题标题】:What do those functions other than __init__ do for the code?除了 __init__ 之外的那些函数对代码有什么作用?
【发布时间】:2020-01-24 02:31:17
【问题描述】:
class Cellphone:
  def __init__(self, manufact, model, price):
    self.__manufact = manufact
    self.__model = model
    self.__retail_price = price

  def set_manufact(self, manufact):
    self.__manufact = manufact

  def set_model(self, model):
    self.model = model

  def set_retail_price(self, price):
    self.__retail_price = price

  def get_manufact(self):
    return self.__manufact

  def get_model(self):
    return self.__model

  def get_retail_price(self):
    return self.__retail_price

我有点理解 __init__ 是你必须在类中拥有的东西但是,其余的功能,如 def get_retail 或真正的其他功能,我不知道它们的目的是什么.. 我从其他网站上读过 __init__ 的作用,但我似乎真的无法理解它的想法。我知道如何使用 __init__ 但我不知道它实际上做了什么。 很抱歉,如果我的问题到处都是,这有点像我对整个班级的理解

【问题讨论】:

  • 他们被称为getter/setter
  • 我想我的问题变成了 getter/setter 做什么?即使没有它们,代码也会运行良好吗?我看不出使用它们的意义
  • 这看起来像是将 Java (?) 编程风格应用于 Python 代码的糟糕示例。动态语言允许以更简洁的方式实现相同的结果,例如,dataclasses

标签: python class


【解决方案1】:

如果你创建了一个类的实例,那么你就是在调用 init 函数

c = Cellphone(1,2,3)

然后你需要稍后访问这些值,所以你会得到它们

print(c.get_retail_price())

那么,假设手机开始销售,你就得定价

c.set_retail_price(2)
print(c.get_retail_price())

【讨论】:

    【解决方案2】:

    为了尽可能简单,这些函数只是类的 settergetter 函数。目的是定义类成员(在 setter 函数的情况下)或从类中检索数据(在 getter 函数的情况下)。因此使用“set”和“get”术语。

    我们通常希望这些函数用于 OOP 编程,因为我们的函数是我们与程序中的其他对象交互的唯一方式,因此是面向对象的编程。

    init 函数只是一个构造函数,它会在您每次创建类的对象时自动运行。它应该更容易定义它的类成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      相关资源
      最近更新 更多