【发布时间】:2013-02-14 22:46:03
【问题描述】:
好的,所以我正在尝试打印所有汽车对象...我有 2 个问题:
- 我实施
__iter__的方式是否可接受? - 我现在得到了我想要的结果,但结果相当丑陋...有没有办法格式化打印以使其看起来更漂亮?
这是我的代码:
import sqlite3
class Database:
def __init__(self, **kwargs):
self.filename = kwargs.get('filename')
def __iter__(self):
car_object = {}
cursor = self._db.execute('select * from CARS'.format(self._table))
for row in cursor:
objectname = str(row['IDENT'])
car_object[objectname] = Cars(make = row['MAKE'],
model = row['MODEL'], disp = row['DISPLACEMENT'],
power = row['POWER'], luxury = row['LUXURY'])
yield dict(row)
@property
def filename(self):
return self._filename
@filename.setter
def filename(self, fn):
self._filename = fn
self._db = sqlite3.connect(fn)
self._db.row_factory = sqlite3.Row
class Cars:
def __init__(self, **kwargs):
self.variables = kwargs
def set_Variable(self, k, v):
self.variables[k] = v
def get_Variable(self, k):
return self.variables.get(k, None)
def main():
db = Database(filename = 'insurance.sqlite')
print ('IDENT MAKE MODEL
DISPLACEMENT POWER LUXURY')
for item in db:
print(item['IDENT'], ' ', item['MAKE'], ' ',
item['MODEL'],' ', item['DISPLACEMENT'],
' ', item['POWER'],' ', item['LUXURY'])
if __name__ == "__main__": main()
【问题讨论】:
-
您的缩进看起来不正确。这不是你的错误的来源,它只是问题的格式问题。
-
@Bryan Oakley...在 Eclipse 中看起来不错,但这个页面让它看起来很奇怪。
-
没有人会在 Eclipse 中查看您的代码。请花时间为问题正确格式化。最简单的方法可能是您将所有制表符转换为空格,然后再将其粘贴到问题中。
-
布莱恩,抱歉,我已经编辑过了。谢谢。
-
它看起来仍然不正确。使用 python,你需要特别勤奋,因为缩进量定义了一行代码所在的块。你的 def 需要比你的 class 语句缩进更多。
标签: python class python-3.x iterator