python中的"方法重载"

MxL*_*evs 1 python overloading

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

两种方法都是单行,只需设置一个值,或返回一个值.

def set_number(self, num):

   self.count = num

def get_number(self):

   return self.count

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

或者我应该坚持清晰并保持分离?有些人认为将所有这些单线保留在自己身上是"浪费空间",而其他人不同意并且更喜欢将它们分开.

我选择其中一个的原因是什么?

Fog*_*ird 10

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

其他语言中的getter和setter的要点是封装和未来验证,以防您需要向getter或setter添加逻辑.在Python中,您可以通过稍后使用来完成此操作property,这不会破坏您现有的API.

@property
def number(self):
     # do extra logic if necessary
    return self.count
Run Code Online (Sandbox Code Playgroud)

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

Python不是Java.=)

额外奖金阅读材料: