我正在处理一个有限的“对象”列表,我将在我的小脚本中使用它:
books = [
{'name': 'Book1': 'id', '123', 'text', '.....'},
{'name': 'Book2': 'id', '123', 'text', '.....'},
{'name': 'Book3': 'id', '123', 'text', '.....'},
]
为这种书籍类型创建一个类是否有意义,或者它是否很好?
创建一个类的问题是可能会有更多的样板。
答案 0 :(得分:4)
由于您只想存储数据,我建议您使用命名元组。这是named tuples如何使用的一个很好的例子。
理想情况下,您可以简单地遍历书籍列表,然后获取每个列表的值,然后将它们放入一个命名元组中。然后就可以这样简单地访问它们:
some_book.name
这是一个简短的例子:
>>> from collections import namedtuple
>>> NetworkAddress = namedtuple('NetworkAddress',['hostname','port'])
>>> a = NetworkAddress('www.python.org',80)
>>> a.hostname
'www.python.org'
>>> a.port
80
>>> host, port = a
>>> len(a)
2
>>> type(a)
<class '_ _main_ _.NetworkAddress'>
>>> isinstance(a, tuple)
True
>>>
这样可以更轻松地访问您图书中的数据,并帮助您确保图书所需的所有数据都存在。
答案 1 :(得分:2)
您当前的代码完全正确。而且它在运行时的速度要快得多,因为Python在实例化非内置对象时有点慢。如果你想要高性能,那么尽量避免在Python中实例化类。但是你支付代码的价格有点难看。
您甚至可以创建一个功能,将条目添加到您的书籍列表中。如果你有一个班级,这相当于你的“构造函数”。
答案 2 :(得分:2)
如果你有许多“哑”对象只有成员而没有方法,那么这种模式可能有用:
class Obj(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
在这三行之后,您可以使用
创建包含所需字段的对象books = [
Obj(name='Book1', id='123', text='.....'),
Obj(name='Book2', id='124', text='.....'),
Obj(name='Book3', id='125', text='.....'),
Obj(name='Book4', id='126', text='.....')
]
您可以稍后使用
for b in books:
print b.id, b.name
这种方法允许您使用相同的更易读的语法编写程序代码,如果将来您需要使用方法更新为完整的特定类。
答案 3 :(得分:0)
如果你不计划使用方法,你应该没那么好。否则我会推荐使用课程。