----- Original Message ----- > From: "ast" <nom...@invalid.com> > I have the idea to write: > > def __init__(center=(0,0), radius=10, mass=None)): > > if mass == None: > self.mass = radius**2 > else: > self.mass = mass > > but maybe Python provides something clever. > > Thx
If you like one-liners, def __init__(self, center=(0,0), radius=10, mass=None): self.center = center self.radius = radius self.mass = (mass is None and radius**2) or mass But there's an issue with that solution: self.mass being computed during the instance initialization, what if radius is changing ? c1 = Circle((0,0), 10, None) print c1.mass 20 c1.radius = 20 print c1.mass 20 # that is unexpected Everytime an attribute is computed from another attribute, it should ring a python bell : property def __init__(self, center, radius, mass): self.center = center self.radius = radius self._mass = mass @property def mass(self): return self._mass if self._mass is not None else self.radius*2 c1 = Circle((0,0), 10, None) print c1.mass 20 c1.radius = 20 print c1.mass 40 JM Note : what is the mass of a circle ? -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -- https://mail.python.org/mailman/listinfo/python-list