2010-10-21 13 views
9

Estoy creando un programa que puede acceder a los datos almacenados dentro de una clase. Así, por ejemplo, tengo esta clase:¿Imprimir todas las variables en una clase? - 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) 

Así que usando esto puedo llamar a una sola variable como:

print db['luke'].name 

Pero si quería imprimir todas las variables, estoy un poco perdido.

Si me quedo:

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

me sale:

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

Pero yo quiero ser capaz de imprimir los datos reales de aquellos.

¿Cómo puedo hacer esto?

¡Gracias de antemano!

Respuesta

16
print db['han'].__dict__ 
+1

Gracias amontonamientos hombre! –

0

Sólo trate beeprint

después pp(db['han']), se imprimirá la siguiente:

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

no hay métodos, no hay propiedades privadas.

0

de impresión (VARs (Objectname))

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

Esto imprimirá todas las variables de clase con valores inicializados.

Cuestiones relacionadas