我正在尝试创建一个在一个类中填充并在另一个类中读取的列表。我有很多事情,现在我收到下面显示的错误。我只显示一个读取列表的类,但还会有其他类。
我该怎么做?
ReadDatabase.py
class ReadDatabase(object):
f_type_list = ReadDatabase.getFTypes() ## 'ReadDatabase' not defined
@staticmethod
def getFTypes():
<reads from database>
return my_list
MyTreeView.py
from ReadDatabase import *
class MyTreeView (ttk.Treeview):
def __init__(self, frame=None, list=[], column_headers=[]):
for f_type in ReadDatabase.f_type_list:
<do stuff>
答案 0 :(得分:1)
您可以通过两种不同的方式将其分为两个不同的类。
示例1:使用两个类,一个类(A
)创建并更新列表,另一个类(B
)创建{{1}的实例}并对其进行控制:
A
或
示例2:您可以在类class A:
"""
Create and updates the list
"""
def __init__(self):
self.my_list = []
self._read_from_database()
def _read_from_database(self):
# some database update logic
self.my_list.append(3)
class B:
"""
Creates an instance of A and can read from it.
"""
def __init__(self):
self.a = A()
def print_list(self):
for index, element in enumerate(self.a.my_list):
print(f"Index: {index} Element: {element}")
b_object = B()
b_object.print_list() # Prints: Index: 0 Element: 3
中创建一个方法,并将其从类B
中的lst
传递给它:
A
如果您想这样做,也可以将class A:
"""
Create and updates the list
"""
def __init__(self):
self.my_list = []
self._read_from_database()
def _read_from_database(self):
# some database update logic
self.my_list.append(3)
class B:
def __init__(self):
pass
def print_list(self, lst):
for index, element in enumerate(lst):
print(f"Index: {index} Element: {element}")
a_object = A()
b_object = B()
b_object.print_list(a_object.my_list)
的整个实例传递给A
以供使用。