<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <br>
    Hello Bob,<br>
    <br>
    Thanks for this better and simple approach!<br>
    To be perfect I would like to be able to do.<br>
    &gt;&gt;&gt; type = CategoryType()<br>
    &gt;&gt;&gt; type.TRANSISTOR<br>
    0<br>
    I will use your enums declaration and the range part to use as keys
    for enums.<br>
    And I will raise a KeyError in toString() to handle invalid
    litteral.<br>
    <br>
    Thanks!<br>
    <br>
    Regards<br>
    Karim<br>
    <br>
    <br>
    On 01/18/2011 02:24 PM, bob gailer wrote:
    <blockquote cite="mid:4D359477.8070309@gmail.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      On 1/18/2011 8:08 AM, Karim wrote:
      <blockquote cite="mid:4D3590CD.5070402@free.fr" type="cite">
        <meta content="text/html; charset=ISO-8859-1"
          http-equiv="Content-Type">
        <br>
        I know this is ugly but until now it is the only way (with this
        side effect) I found to declare Enums class that I <u>understand</u>:<br>
        <br>
        <small><b>class CategoryType(object):<br>
            &nbsp;&nbsp;&nbsp; """Implements the enumeration and prevent associated
            newly created<br>
            &nbsp;&nbsp;&nbsp; instances to redefine enums value via special class
            variable '__slots__'<br>
            &nbsp;&nbsp;&nbsp; definition. It makes also, instances have no attributes
            at all.<br>
            &nbsp;&nbsp;&nbsp; """<br>
            &nbsp;&nbsp;&nbsp; __slots__ = ()<br>
            <br>
            &nbsp;&nbsp;&nbsp; TRANSISTOR, MOS, BIPOLAR, CAPACITOR, RESISTOR, DIODE,
            ESD, PAD, \<br>
            &nbsp;&nbsp;&nbsp; COMPARATOR, OPAMP, ADC, DAC, PLL, OTHER = range(14)<br>
            <br>
            &nbsp;&nbsp;&nbsp; def toString ( self, litteral ):<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; """Convert the litteral integer number to its
            associated string representation."""<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if litteral == self.TRANSISTOR:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 'transistor'<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif litteral == self.MOS:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 'mos'<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif litteral == self.BIPOLAR:</b></small><br>
        [...]<br>
      </blockquote>
      IMHO this just cries out for a dictionary:<br>
      <br>
      <tt>class CategoryType(object):<br>
        &nbsp; __slots__ = ()<br>
        &nbsp; enums = {<br>
        &nbsp;&nbsp;&nbsp; 0: 'transistor',<br>
        &nbsp;&nbsp;&nbsp; 1: 'mos', <br>
        &nbsp;&nbsp;&nbsp; ...<br>
        &nbsp;&nbsp;&nbsp; }<br>
        &nbsp; def toString(self, literal):<br>
        &nbsp;&nbsp;&nbsp; """Convert the literal integer number to its associated
        string representation."""<br>
        &nbsp;&nbsp;&nbsp; return self.enums[literal]<br>
        <br>
      </tt>Note this does not handle invalid literal.<br>
      <br>
      If you are happy with range 14) you could alternatively use a
      list:<br>
      <tt>&nbsp; enums = ['transistor, 'mos',&nbsp; ...]<br>
      </tt><br>
      <pre class="moz-signature" cols="72">-- 
Bob Gailer
919-636-4239
Chapel Hill NC</pre>
    </blockquote>
    <br>
  </body>
</html>