python - python 中的 "Method overloading"

标签 python overloading

我认为这个概念叫做重载。 现在我正在编写一个将提供 getter 和 setter 方法的类,但遇到了设计问题。

这两种方法都是单行代码,只需设置一个值或返回一个值。

def set_number(self, num):

   self.count = num

def get_number(self):

   return self.count

通过做一些基本上将两种方法合二为一然后根据是否提供 num 参数来决定应该执行哪一行的方法来节省空间并使类“看起来”更小会更好吗?

或者我应该坚持清晰并将它们分开?有些人认为单独保留所有这些单行是一种“浪费空间”,而其他人则不同意并且更愿意将它们分开。

我会选择其中之一的任何原因?

最佳答案

在 Python 中,您应该根本不使用 getter 和 setter。而是直接引用 count 属性,例如打印 instance.countinstance.count = 5

其他语言中的 getter 和 setter 的意义在于封装和面向 future ,以防您需要向 getter 或 setter 添加逻辑。在 Python 中,您可以稍后使用 property 来完成此操作,这不会破坏您现有的 API。

@property
def number(self):
     # do extra logic if necessary
    return self.count

属性也可以有 setter - 参见:http://docs.python.org/library/functions.html#property

Python 不是 Java。 =)

额外的奖励阅读 Material :

关于python - python 中的 "Method overloading",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598835/

相关文章:

python - 在 scrapy 中启用 deltafetch

javascript - Jupyter Notebook 中的 Google Colabs eval_js?

python - 如何使用 python curl 文件

c++ - 使用 std::function 重载分辨率

python - Django Pandas 到 http 响应(下载文件)

java - 如何在没有if语句的情况下区分重载方法

c++ - 非静态数据成员(数组)的使用无效

c# - 覆盖字符串的方括号运算符?

c++ - 重写重载方法隐藏了一些重载

Python/Pandas - 如果A列等于X或Y,则从B列分配值。如果不是,则分配C列。如何用Python编写?