2010-10-21 64 views
9

我正在製作一個程序,可以訪問存儲在類中的數據。因此,例如我有這個類:在類中打印所有變量? - 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) 

所以用這個我能叫出像一個單一的變量:

print db['luke'].name 

但是,如果我想打印所有變量,我有點失落。

如果我運行:

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

我得到:

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

但我希望能夠打印的實際數據。

我該怎麼做?

在此先感謝!

回答

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

謝謝堆人! – 2010-10-21 23:43:47

0

試試看beeprint

pp(db['han'])後,會打印:

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

沒有方法,沒有專用屬性。

0

打印(VARS(對象名))

輸出: { 'm_var1': 'VAL1', 'm_var2': 'val2的'}

這將打印所有初始化值類變量。