Craig Allen a écrit :
generally, I name the members in the Class definition and set them to
None there...

class Car:

Unless you have a really good reason to use an antiquated and deprecated object model, use "new-style" classes (for a value of "new" being "now many years old"):

class Car(object):

   speed = None
   brand = None

   def __init__():
      self.speed = defaultspeed #alternately, and more commonly, get
this speed as a initializer argument
      self.brand = defaultbrand


Please dont. This is a useless repetition, a violation of the DRY principle, and a potential waste of time for the maintainer who will wonder what these class attributes are for.

That solves the issue of being able to "see" all the members of an
object by reading code...

Not even.

however, this all goes out the window when
composing an instance dynamically (i.e. metaclass type stuff).

No need for metaclasses here. Instances are *always* composed dynamically. While I agree that setting all attributes to a sensible default in the initializer is *usually* good style (even if it's technically useless and possibly error prone), duplicating them all as class attribute is at best a WTF (IMHO and all other disclaimers here...).



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to