klassenattribute bekommen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

ich weiß nicht... ich bin voll der Meinung das schonmal gefragt zu haben, aber ich hab nix gefunden...

Naja, also auf ein Neues (achja, guten morgen uebrigens ;) ):

Ich wuerde gern die Elemente einer Klasse haben... aber nicht nur als String (also mit dir() ), sondern ich moechte schon auch gern wissen, ob es ne Methode oder ein Attribut ist. Da gibts doch sicherlich einen Weg und den habe ich hier bestimmt schonmal gelesen... aber naja, ich find es einfach nicht :(

Ach falls Fragen zum Verwendungszweck aufkommen:

Ich wuerde gern ein Sessionobjekt (bei Karrigell) mit zusaetzlichen Informationen wie Name/Adresse/whatever fuettern. Da es aber nicht nur drei oder vier Attribute werden, wuerde ich sie gern per Schleife durchgehen koennen...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
BlackJack

Kannst Du dann nicht ein Dictionary an das Session-Objekt hängen?
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Schau Dir mal Modul inspect an.
Atomkraftwerkaktienbesitzer
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

BlackJack hat geschrieben:Kannst Du dann nicht ein Dictionary an das Session-Objekt hängen?
Das waere auch machbar, ja. Das macht mich zwar nicht unbedingt gluecklick... aber notfalls mache ich es einfach so.
Ene Uran hat geschrieben:Schau Dir mal Modul inspect an.
Danke fuer den Tipp... das Modul ist nett... aber so richtig hat es scheinbar nix, was mir wirklich nur die Argumente einer Klasse zurueckgibt, die nicht zum Standard gehoeren. getmembers(object, predicate) waere dabei ja nett, aber sie bringt mir nix, da ich sie nicht mehr braeuchte, wenn ich wuesste, wie das predicate fuer die Sachen auszusehen haette, die ich suche ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

So könntest du es testen, aber wirklich sinnvoll ist das nicht.
Warum macht dich ein Dictionary nicht glücklich?

Code: Alles auswählen

import types

class test(object):

    def method1(self, bla):
        pass


def andere_funktion(test):
    pass

t = test()
t.name = 'Hans'
t.land = 'Deutschland'
t.andere_methode = andere_funktion

for x in dir(t):
    if not x.startswith('__'):
        if type(getattr(t,x)) not in (types.MethodType, types.FunctionType):
            print x,type(getattr(t,x))
Gruss
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

rayo hat geschrieben:Hi

So könntest du es testen, aber wirklich sinnvoll ist das nicht.
Warum macht dich ein Dictionary nicht glücklich?
Weil das die Sache noch mehr verlaengert ^^
Ich vermute aber, dass ein Dict am Ende unausweichlich sein wird...

Aber danke fuer den Tipp mit "types" ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

nkoehring hat geschrieben: Ich wuerde gern die Elemente einer Klasse haben... aber nicht nur als String (also mit dir() ), sondern ich moechte schon auch gern wissen, ob es ne Methode oder ein Attribut ist.
Hi.

Hier mal ein Beispiel um zu testen ob es eine Methode ist:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from inspect import getmembers, ismethod

class Foo(object):
    def __init__(self):
        self.instance_attr = None
        for attr in getmembers(self):
            if not attr[0].startswith('__') and ismethod(attr[1]):
                print attr
        
    def class_meth1(self):
        pass
    def class_meth2(self):
        pass
    def class_meth3(self):
        pass

foo = Foo()
``ismethod`` ist ein von vielen. Es gibt in ``inspect`` auch Funktionen mit den du testen kannst ob es eine Funktion ist, ein Klasse, etc.

http://docs.python.org/lib/module-inspect.html

€: Korrektur.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Ja und das umkehren und ich bekomme die Attribute... richtig? Naja, im moment befasse ich mich mit anderen Problemen meines Programmes... aber danke ich werd mir spaeter nochmal alles zu Gemuete fuehren ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Antworten