Voglio scrivere una suite di metodi che fungono da getter quando passano zero argomenti e come setter quando passano un singolo argomento. Ho due due implementazioni ragionevoli, mostrate di seguito. Uno è migliore dell'altro, o forse esiste ancora un modo migliore?
class Thing(object):
def __init__(self):
self._size = 0
def sizeA(self, *args):
if not args:
return self._size
self._size = args[0]
return self
UNIQUE_ID = []
def sizeB(self, arg=UNIQUE_ID):
if arg is self.UNIQUE_ID:
return self._size
self._size = arg
return self
Un paio di commenti:
sizeA()
benchmark più veloce di sizeB()
, ma non mi dà il controllo del conteggio degli argomenti. sizeB()
funziona, ma dipende da UNIQUE_ID
che è invariante, e mi chiedo se ci sono circostanze (ad es. pickling) che potrebbero causarne l'interruzione.
P.S .: Anche se attualmente sto sviluppando in python-2.7, sono aperto a specifiche risposte python-3.x come appropriato.