python 2.7

时间:2016-04-01 08:07:21

标签: python python-2.7

我正在尝试解析包含级联数据结构的yaml文件。像

- Building
  Address
  Zip
  Room
   -- Employee1
   -- Employee2

我正在尝试将其存储在类对象列表中。 我已将问题简化为以下代码:

qstuff.py

class bstuff():
    def __init__(self):
        self.b_name = ""
        self.b_port = ""

class astuff():
    def __init__(self):
        self.a_name = ""
        self.a_port = ""
        self.a_st = [bstuff]

worker.py

from qstuff import astuff
from qstuff import bstuff

my_stuff = [astuff]

more_stuff = [bstuff]

more_stuff.append(bstuff)
more_stuff.append(bstuff)

my_stuff[0].a_st.append(bstuff)

这给了我以下错误:

$ python worker.py 
Traceback (most recent call last):
  File "worker.py", line 11, in <module>
    my_stuff[0].a_st.append(bstuff)
AttributeError: class astuff has no attribute 'a_st'

我已经搜索了很长一段时间但是找不到一个可以理解的答案,为什么这不起作用或我需要如何将级联数据存储在列表中。

1 个答案:

答案 0 :(得分:1)

您没有创建任何实例,您只创建了对类的引用。

您需要调用类来创建该类的实例:

self.a_st = [bstuff()]

my_stuff = [astuff()]
more_stuff = [bstuff()]

您的astuff班级没有a_st属性;该属性仅为astuff.__init__方法中的实例设置(在创建新实例时自动调用)。

我不会直接在课堂上这样做(所以不要在课堂上添加a_st = [bstuff]),除非你真的想要创建一个你不能创建的可变单例类的层次结构实例