2010-10-21 47 views
9

Tôi đang tạo một chương trình có thể truy cập dữ liệu được lưu trữ bên trong một lớp. Vì vậy, ví dụ tôi có lớp học này:In tất cả các biến trong một lớp học? - 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) 

Vì vậy, sử dụng này, tôi có thể gọi ra một biến duy nhất như:

print db['luke'].name 

Nhưng nếu tôi muốn in tất cả các biến, tôi là một chút mất.

Nếu tôi chạy:

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

tôi nhận được:

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

Nhưng tôi muốn để có thể in các dữ liệu thực tế của những người.

Tôi làm cách nào để thực hiện việc này?

Cảm ơn trước!

Trả lời

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

Cảm ơn người đàn ông heaps! –

0

Chỉ cần cố gắng beeprint

sau pp(db['han']), nó sẽ in này:

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

không có phương pháp, không có tài sản riêng.

0

in (VAR (objectName))

Output: { 'm_var1': 'VAL1', 'm_var2': 'VAL2'}

này sẽ in tất cả các biến lớp học với giá trị khởi tạo.

Các vấn đề liên quan