以下代码将两个Pretty Tables添加到MyTableClass
。这些表在类构造函数中启动。我想通过指定addTable
名称来创建两个类方法addTableRow
和newTable
,以添加其他表和数据行。我需要做什么语法?我在Class方法中写了一些代码作为占位符。
from prettytable import *
class MyTableClass(object):
def __init__(self):
self.table1 =PrettyTable(["Student Name", "Score Test 1"])
self.table2=PrettyTable(["Student Name", "Score Test 2"])
def addTable (self, newTable, **kwargs):
#What is the syntax to make NewTable a Class variable of MyTableClass?
self.newTable = PrettyTable(kwargs.values())
def addTableRow(self, newTable, **kwargs):
#What is the syntax to use newTable to add data to added table?
self.newTable.add_row(kwargs.values())
def main():
m = MyTableClass()
m.table1.add_row(["Kenny", 86])
m.table1.add_row(["Jackson", 72])
m.table1.add_row(["Charlie", 100])
m.table2.add_row(["Kenny", 95])
m.table2.add_row(['Jackson', 85])
m.table2.add_row(["Charlie", 99])
print (m.table1)
print (m.table2)
if __name__ == "__main__":
main()
答案 0 :(得分:1)
您可以使用setattr
功能设置属性:
def addTable (self, newTable, **kwargs):
setattr(self, newTable, PrettyTable(kwargs.values()))
您可以使用getattr
从名称中获取属性:
def addTableRow(self, newTable, **kwargs):
getattr(self, newTable).add_row(kwargs.values())
然而,简单地使用表格的字典会更简单:
class MyTableClass(object):
def __init__(self):
self.tables = {
'table1': PrettyTable(["Student Name", "Score Test 1"]),
'table2': PrettyTable(["Student Name", "Score Test 2"]),
}
def addTable (self, newTable, **kwargs):
self.tables[newTable] = PrettyTable(kwargs.values())
def addTableRow(self, newTable, **kwargs):
self.tables[newTable].add_row(kwargs.values())
如果您希望能够通过属性访问指定的表格,例如示例中的self.table1
,只需将__getattr__
定义为:
def __getattr__(self, name):
return self.tables[name]