我正在尝试解析包含级联数据结构的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'
我已经搜索了很长一段时间但是找不到一个可以理解的答案,为什么这不起作用或我需要如何将级联数据存储在列表中。
答案 0 :(得分:1)
您没有创建任何实例,您只创建了对类的引用。
您需要调用类来创建该类的实例:
self.a_st = [bstuff()]
和
my_stuff = [astuff()]
more_stuff = [bstuff()]
您的astuff
班级没有a_st
属性;该属性仅为astuff.__init__
方法中的实例设置(在创建新实例时自动调用)。
我不会直接在课堂上这样做(所以不要在课堂上添加a_st = [bstuff]
),除非你真的想要创建一个你不能创建的可变单例类的层次结构实例