[Python-Dev] Info needed on metaclasses / type-ing

Dimitris Garanatsios rs96057@hotmail.com
Sun, 24 Mar 2002 11:07:57 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_0006_01C1D324.277B7410
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

I recently browsed through an unfinished book of Bruce Eckel, "Thinking
in Python", Revision 0.1.2
I can't remember the URL where i got it, but i found it through
searching for documentation on Python from the main site, www.python.org
 
I found the following peace of code there:
 
------------------------------------------------------------------
                
#: c01:SingletonMetaClass.py
class SingletonMetaClass(type):
    def __init__(cls, name, bases, dict):
        super(SingletonMetaClass, cls).__init__(name, bases, dict)
        original_new = cls.__new__
 
        def my_new(cls, *args, **kwds):
            if cls.instance == None:
                cls.instance = original_new(cls, *args, **kwds)
            return cls.instance
 
        cls.instance = None
        cls.__new__ = staticmethod(my_new)
 
class bar(object):
    __metaclass__ = SingletonMetaClass
 
    def __init__(self,val):
        self.val = val
 
    def __str__(self):
        return `self` + self.val
 
...
#:~
 
------------------------------------------------------------------
 
My question is about the "SingletonMetaClass" class.
I have tried in the past to create my own types using Python and just
could not find a way of doing that since built-in type objects'
structure where not documented.
 
The "SingletonMetaClass though", as far as i can understand, please help
me with that, is doing exactly what i wanted: a new type definition. I
browsed Python's manuals to find more about the attributes and functions
that are used, but found nothing...
 
Could anyone help me find information about the meaning and use of the
following attributes/functions/objects? These are:
 
--- the "__metaclass__" attribute of the "bar" class (derived from
object)
 
--- the "object" object itself
 
--- the "super" function used in the "SingletonMetaClass" class (a class
for a new type object?)
 
--- the "__new__" attribute/method of a class (applies to any class?)
 
--- the "staticmethod" function used in the "SingletonMetaClass" class
 
--- any additional info about related classes or functions that are not
used in the above example but exist and are available to use
 
Thanx, Dimitris
 

------=_NextPart_000_0006_01C1D324.277B7410
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">


<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 10">
<meta name=3DOriginator content=3D"Microsoft Word 10">
<link rel=3DFile-List href=3D"cid:filelist.xml@01C1D280.D8EC0D80">
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:EnvelopeVis/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	mso-style-noshow:yes;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:Arial;
	mso-ascii-font-family:Arial;
	mso-hansi-font-family:Arial;
	mso-bidi-font-family:Arial;
	color:windowtext;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
@page Section1
	{size:595.3pt 841.9pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */=20
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";}
</style>
<![endif]-->
</head>

<body lang=3DEL link=3Dblue vlink=3Dpurple =
style=3D'tab-interval:36.0pt'>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>I recently browsed =
through an
unfinished book of Bruce <span class=3DSpellE>Eckel</span>, =
&quot;Thinking in
Python&quot;, Revision 0.1.2<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>I can't remember the =
URL
where <span class=3DSpellE>i</span> got it, but <span =
class=3DSpellE>i</span> found
it through searching for documentation on Python from the main site,
www.python.org<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>I found the following =
peace
of code there:<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'>-------------------------------------------=
-----------------------<o:p></o:p></span></font></p>

<p class=3DMsoNormal style=3D'tab-stops:93.0pt'><font size=3D2 =
face=3D"Courier New"><span
lang=3DEN-GB style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:
EN-GB'><span =
style=3D'mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'>#:
c01:SingletonMetaClass.py<o:p></o:p></span></font></p>

<p class=3DMsoNormal><span class=3DGramE><font size=3D2 face=3D"Courier =
New"><span
lang=3DEN-GB style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:
EN-GB'>class</span></font></span><font size=3D2 face=3D"Courier =
New"><span
lang=3DEN-GB style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:
EN-GB'> <span =
class=3DSpellE>SingletonMetaClass</span>(type):<o:p></o:p></span></font><=
/p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span =
class=3DGramE>def</span> __init__(<span
class=3DSpellE>cls</span>, name, bases, <span =
class=3DSpellE>dict</span>):<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DGramE>super(</span><span
class=3DSpellE>SingletonMetaClass</span>, <span =
class=3DSpellE>cls</span>).__init__(name,
bases, <span class=3DSpellE>dict</span>)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DSpellE>original_new</span>
=3D <span class=3DSpellE>cls.__new</span>__<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DGramE>def</span> <span
class=3DSpellE>my_new</span>(<span class=3DSpellE>cls</span>, *<span =
class=3DSpellE>args</span>,
**<span class=3DSpellE>kwds</span>):<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp; </span><span class=3DGramE>if</span> <span
class=3DSpellE>cls.instance</span> =3D=3D =
None:<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span =
class=3DSpellE>cls.instance</span>
=3D <span class=3DSpellE>original_<span =
class=3DGramE>new</span></span><span
class=3DGramE>(</span><span class=3DSpellE>cls</span>, *<span =
class=3DSpellE>args</span>,
**<span class=3DSpellE>kwds</span>)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp; </span><span class=3DGramE>return</span> <span
class=3DSpellE>cls.instance</span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DSpellE>cls.instance</span>
=3D <span class=3DGramE>None</span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DSpellE>cls.__new</span>__ =3D
<span class=3DSpellE><span class=3DGramE>staticmethod</span></span><span
class=3DGramE>(</span><span =
class=3DSpellE>my_new</span>)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><span class=3DGramE><font size=3D2 face=3D"Courier =
New"><span
lang=3DEN-GB style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:
EN-GB'>class</span></font></span><font size=3D2 face=3D"Courier =
New"><span
lang=3DEN-GB style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:
EN-GB'> bar(object):<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span>__<span =
class=3DSpellE>metaclass</span>__ =3D <span
class=3DSpellE>SingletonMetaClass</span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span =
class=3DGramE>def</span> __init__(<span
class=3DSpellE>self,val</span>):<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DSpellE>self.val</span> =3D <span
class=3DSpellE><span =
class=3DGramE>val</span></span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp; </span><span =
class=3DGramE>def</span> __<span
class=3DSpellE>str</span>__(self):<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><span
style=3D'mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span><span class=3DGramE>return</span> `self`
+ <span class=3DSpellE>self.val</span><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'>...<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'>#:~<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
lang=3DEN-GB
style=3D'font-size:10.0pt;font-family:"Courier =
New";mso-ansi-language:EN-GB'>-------------------------------------------=
-----------------------<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>My question is about =
the
&quot;<span class=3DSpellE>SingletonMetaClass</span>&quot; =
class.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>I have tried in the =
past to
create my own types using Python and just could not find a way of doing =
that
since built-in type objects' structure where not =
documented.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>The &quot;<span =
class=3DSpellE>SingletonMetaClass</span>
though&quot;, as far as <span class=3DSpellE>i</span> can understand, =
please help
me with that, is doing exactly what <span class=3DSpellE>i</span> =
wanted: a new
type definition. I browsed Python's manuals to find more about the =
attributes
and functions that are used, but found =
nothing...<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>Could anyone help me =
find
information about the meaning and use of the following
attributes/functions/objects? These are:<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>the</span>
&quot;__<span class=3DSpellE>metaclass</span>__&quot; attribute of the
&quot;bar&quot; class (derived from object)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>the</span>
&quot;object&quot; object itself<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>the</span>
&quot;super&quot; function used in the &quot;<span =
class=3DSpellE>SingletonMetaClass</span>&quot;
class (a class for a new type object?)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>the</span>
&quot;__new__&quot; attribute/method of a class (applies to any =
class?)<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>the</span>
&quot;<span class=3DSpellE>staticmethod</span>&quot; function used in =
the &quot;<span
class=3DSpellE>SingletonMetaClass</span>&quot; =
class<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'>--- <span =
class=3DGramE>any</span>
additional info about related classes or functions that are not used in =
the
above example but exist and are available to =
use<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-GB =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-GB'><o:p>&nbsp;</o:p></span=
></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Thanx, Dimitris</span></font><font size=3D2 =
face=3DArial><span
lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:Arial;mso-ansi-language:EN-US'><o:p=
></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span lang=3DEN-US =
style=3D'font-size:
10.0pt;font-family:Arial;mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span=
></font></p>

</div>

</body>

</html>

------=_NextPart_000_0006_01C1D324.277B7410--