Python:从存储在字典中的对象访问对象属性

时间:2014-02-07 04:32:11

标签: python class object dictionary attributes

我有一个字典,对象存储为值。我如何访问和打印特定对象的属性? 例如,

dict={0:obj0, 1:obj1, 2:obj2, 3:obj3}

我想打印obj1.attribute。我试过了:

print (dict[key]).attribute

无济于事。我不能直接访问该对象,因为我没有将它分配给变量。该程序自动生成对象并使用自动生成的密钥将它们放在dict中,这使我无需手动分配任意数量的值。如果有人知道更好的方式来表达这个问题,请继续。非常感谢你!

编辑:我的字典名称不是'dict',我的属性也不是'属性'。这些仅用于清楚。

编辑:好的,这是正在发生的事情。我正在使用Tkinter通过输入字段检索联系信息。我正在使用该输入来创建具有属性名称,地址等的对象。所以,

class User():

    def __init__(self, name='', street='', city='', state='', zip=''):
        self.name=name
        self.street=street
        self.city=city
        self.state=state
        self.zip=zip

###### code below is outside of class User #####

    def make(name='', street='', city='', state='', zip='', count=0):
        dic[count]=User(name='', street='', city='', state='', zip='')

有没有理由“dic [0] .name”会返回一个空字符串?

1 个答案:

答案 0 :(得分:1)

更改此

def make(name='', street='', city='', state='', zip='', count=0):
    dic[count]=User(name='', street='', city='', state='', zip='')

def make(name='', street='', city='', state='', zip='', count=0):
    dic[count]=User(name=name, street=street, city=city, state=state, zip=zip)

如果你的属性包含空格或空字符串,你可以在某些情况下这样做,它会帮助你知道是否有东西。

print "<%s>" % my_dict[key].attribute

如果您看到<>这可能是一个空字符串,如果您在其间看到其他内容,则可能是空格是制表符或换行符或任何不可见的内容。

另一种可能性是,由于某些原因,您获得的attribute是一个覆盖__repr____str__并返回空字符串的对象。如果不知道你正在处理什么,就很难提供更多帮助。