getFoo1() vs. class.foo1

Zac Jensen listbox at cybereal.org
Sun Jun 15 04:59:16 CEST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Saturday 14 June 2003 08:27 am, John J. Lee wrote:
> "Manuel" <manuelbastioniNOSPAM at tin.it> writes:
> > Thanks!
> > I love python: without set and get boring instructions,
> > the class is more simple and readable.  :-)
>
> But note that sometimes, it *is* more readable to give a set_x (and
> maybe get_x) function, if you want to suggest to your users that
> something interesting is going on there.
>
>
> John

The funny thing is, right after I read this I had a need for the property 
(well, it was a convenience anyway) for this code:

#casemod.py

"""Case module to provide an object oriented implentation of a case 
structure."""

class Case:
  """Case class is designed to work like the case directive in some other 
languages.

  The idea is to subclass the class for your use. i.e.
  if you created the subclass like
  class mycase(Case):
    def case_pie(self):
      print self.o_data

  and then created an instance like: case = mycase("pie")
  and then ran case("Hahahah")
  then "Hahahah" would be printed on stdio
  if you do case.t_item = "something else"
  then nothing will happen.

  it's worth noting that care should be taken as to which test item strings 
you use
  spaces are converted to underscore for the inherited definition but, nothing 
else.
  o_data is assigned in the call but is optional, i.e. case(blah) will assign 
blah to o_data.
  """

  def __init__(self):
    UserDict.__init__(self)
    self.o_data = None

  def gett_item(self): return self.__t_item
  def sett_item(self, value): self.__t_item = str(value)
  def delt_item(self): del self.__t_item
  t_item = property(gett_item, sett_item, delt_item, "Test item property")

  def default(self):
    return bool(0)

  def __call__(self, testitem, optdata=None):
    self.t_item = testitem
    self.o_data = optdata
    ret = None
    if hasattr(self, "case_" + self.t_item.replace(" ", "_")):
        func = getattr(self, "case_" + self.t_item.replace(" ", "_"),
                                                         self.default)
        #previous line moved down for message width limit
        if callable(func):
          ret = func()
    self.o_data = None
    return ret
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE+6+EEV3L7YsSif1URApg7AJ9exbYR/iby94TNcERm+cBY6ksfWwCfU6Ew
E8Am8sghbVDGOi2B5g7Wqlo=
=kkNe
-----END PGP SIGNATURE-----






More information about the Python-list mailing list