2010-10-21 18 views
9

Je crée un programme qui peut accéder aux données stockées dans une classe. Ainsi, par exemple, j'ai cette classe:Imprimer toutes les variables d'une classe? - Python

#!/usr/bin/env python 
import shelve 

cur_dir = '.' 

class Person: 
    def __init__(self, name, score, age=None, yrclass=10): 
     self.name = name 
     self.firstname = name.split()[0] 
     try: 
      self.lastname = name.split()[1] 
     except: 
      self.lastname = None 

     self.score = score 
     self.age = age 
     self.yrclass = yrclass 
    def yrup(self): 
     self.age += 1 
     self.yrclass += 1 

if __name__ == "__main__": 
    db = shelve.open('people.dat') 
    db['han'] = Person('Han Solo', 100, 37) 
    db['luke'] = Person('Luke Skywalker', 83, 26) 
    db['chewbacca'] = Person('Chewbacca', 100, 90901) 

Donc, en utilisant ce que je peux appeler une seule variable comme:

print db['luke'].name 

Mais si je voulais imprimer toutes les variables, je suis un peu perdu.

Si je cours:

f = db['han'] 
dir(f) 

je reçois:

['__doc__', '__init__', '__module__', 'age', 'firstname', 'lastname', 'name', 'score', 'yrclass', 'yrup'] 

Mais je veux être en mesure d'imprimer les données réelles de celles-ci.

Comment est-ce que je peux faire ceci?

Merci d'avance!

Répondre

0

Juste essayer beeprint

après pp(db['han']), il imprimera ceci:

instance(Person): 
    age: 37 
    firstname: 'Han', 
    lastname: 'Solo', 
    name: 'Han Solo', 
    score: 100, 
    yrclass: 10 

aucune méthode, aucune propriété privée.

0

impression (vars (OBJECTNAME))

Sortie: { 'm_var1': 'val1', 'm_var2': 'val2'}

Cela affichera toutes les variables de classe avec des valeurs initialisés.