我正在使用一个有限的“对象”列表,我将在我的小脚本中使用这些对象:
books = [
{'name': 'Book1': 'id', '123', 'text', '.....'},
{'name': 'Book2': 'id', '123', 'text', '.....'},
{'name': 'Book3': 'id', '123', 'text', '.....'},
]为这种图书类型创建一个类有意义吗,或者它的方式还可以吗?
创建一个类的问题是会有稍微多一点的样板。
发布于 2013-09-22 23:57:48
既然您只是想存储数据,我建议您使用命名元组。这是如何使用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
>>>这将使访问书中的数据变得简单得多,并帮助您确保书中所需的所有数据都存在。
发布于 2013-09-22 23:52:58
您当前的代码看起来非常有意义。而且它在运行时要快得多,因为Python实例化非内置对象的速度有点慢。如果你想要高性能,那么尽量避免在Python中实例化类。然而,你付出的代价是你的代码有些丑陋。
您甚至可以创建一个函数,将条目添加到您的图书列表中。如果你有一个类,它就等同于你的“构造函数”。
发布于 2013-09-23 00:02:56
如果您有许多只有成员而没有方法的“哑巴”对象,那么这个模式可能会很有用:
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这种方法将允许您使用更具可读性的语法来编写程序代码,这些语法在将来需要更新为具有方法的成熟的特定类时仍然是必需的。
https://stackoverflow.com/questions/18945688
复制相似问题