【问题标题】:Accessing components of a class inside a list访问列表中类的组件
【发布时间】:2017-05-05 01:07:48
【问题描述】:

所以我有这段代码不起作用:

class Airport():
 def _init_ (self):
    self.Code_Icao=""
    self.Latitude=""
    self.Longitude=""
    self.Schengen=False
A=Airport()
A.Code_Icao="LMAO"
A.Latitude="12321412"
A.Longitude="12123123"
B=Airport()
B.Code_Icao="JEJE"
B.Latitude="1231231"
B.Longitude="123123"
v=[]
v.append(A.__dict__)
v.append(B.__dict__)
print v[0].Code_Icao

我不知道为什么它不允许我访问列表组件的代码。
我不断收到此错误:

Traceback(最近一次调用最后一次):文件 “/Users/marc/PycharmProjects/untitled5/read.py”,第 18 行,在 print v[0].Code_Icao AttributeError: 'dict' 对象没有属性 'Code_Icao'

【问题讨论】:

  • v[0]dict,而不是 Airport。改用print v[0]['Code_Icao']
  • 成功了!非常感谢你!
  • 我认为 v = [A, B] 会更接近您的预期。

标签: python arrays list


【解决方案1】:

在以下几行中:

v=[]
v.append(A.__dict__)
v.append(B.__dict__)

您没有将AB 附加到v,而是两个dictionaries with A and B's writable attributes。注意这里的区别:

>>> A
<__main__.Airport instance at 0x10c30c758>
>>> A.__dict__
{'Latitude': '12321412', 'Longitude': '12123123', 'Code_Icao': 'LMAO'}

A 是一个Airport 对象,而A.__dict__ 是一个字典,其中存储了A 的属性。

因此,由于您将字典存储在 v 中,因此您必须使用正确的符号来访问其值:

print v[0]['Code_Icao']

这应该会打印出您想要达到的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    相关资源
    最近更新 更多