__version__, __author__ etc. bei Objekten und Klassen

20/04/2011 - 10:07 von Ole Streicher | Report spam
Hallo,

ich habe eine Bibliothek, die mir aus einer shared Library Objekte baut,
die jeweils einer bestimmten Funktion der lib zugeordnet sind.

Daher hat jedes dieser Objekte eine Versionsnummer sowie einen Autor (+
E-Mail).

Wo würde man diese Informationen sinnvoll unterbringen? Eine Idee wàre
es, die Objektvariablen (bzw. properties) __version__, __author__ und
__email__ zu definieren. Ist das ein gangbarer und ein sinnvoller Weg
oder würde man damit irgendwas pythonisches kaputtmachen?

Und: __version__ ist ja offenbar per Konvention ein String; die
Bibliothek enthàlt aber zusàtzlich noch einen Integer als Version
(sodass man auf "àltere/neuere Version als..." mittels "<" / ">" testen
kann). Wo würde man das in Python hinpacken?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Christopher Arndt
20/04/2011 - 14:51 | Warnen spam
Ole Streicher schrieb:
Wo würde man diese Informationen sinnvoll unterbringen? Eine Idee wàre
es, die Objektvariablen (bzw. properties) __version__, __author__ und
__email__ zu definieren. Ist das ein gangbarer und ein sinnvoller Weg
oder würde man damit irgendwas pythonisches kaputtmachen?



Da kommt dir wahrscheinlich das Name-Mangling für pseudo-private
Objekt-Attributnamen, die mit zwei Unterstrichen beginnen, in die Quere:

http://docs.python.org/reference/ex...#index-941

Da es sich hierbei ja um "öffentliche" Attribute handelt, die von
außerhalb der Klasse abgefragt werden, würde ich hier ganz normale
Attributnamen ohne Unterstriche am Anfang verwenden. Du könntest ja die
ganzen Metainformationen in einem Dictionary oder einem
Datencontainer-Objekt bündeln:

class MyInterface(Object):
meta = {
version = '1.0'
version_info = (1, 0, 0),
author = 'Paul Progger'
author_email = '...'
}

Und: __version__ ist ja offenbar per Konvention ein String; die
Bibliothek enthàlt aber zusàtzlich noch einen Integer als Version
(sodass man auf "àltere/neuere Version als..." mittels "<" / ">" testen
kann). Wo würde man das in Python hinpacken?



Analog zu 'sys.version' und 'sys.version_info' würde ich für Module
'__version_info__' verwenden, als Tupel (major, minor, patchlevel). Für
Objekte, siehe obiges Beispiel.

Chris

Ähnliche fragen