什么类型的Python数据结构由"< >",就像这样。
[<Board 1>, <Board 2>, <Board 3>]
我在使用Flask-SQLAlchemy库进行Python3时遇到了这个问题。请参阅下面的代码。
class Board(db.Model):
__tablename__ = 'boards'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(256), unique=True, nullable=False)
description = db.Column(db.String(256))
def __init__(id, name, description):
self.id = id
self.name = name
self.description = description
tuple_boards = Board.query.all()
print (tuple_boards)
[<Board 1>, <Board 2>, <Board 3>]
答案 0 :(得分:4)
这不是数据结构。这就是Flask-SQLAlchemy如何将模型实例表示为Model.__repr__
的字符串:
class Model(object):
...
def __repr__(self):
identity = inspect(self).identity
if identity is None:
pk = "(transient {0})".format(id(self))
else:
pk = ', '.join(to_str(value) for value in identity)
return '<{0} {1}>'.format(type(self).__name__, pk)
它比默认的object.__repr__
更有用:
In [1]: class Thing(object):
... pass
...
In [2]: [Thing(), Thing(), Thing()]
Out[2]:
[<__main__.Thing at 0x10c8826a0>,
<__main__.Thing at 0x10c8820b8>,
<__main__.Thing at 0x10c8822e8>]
你可以在__repr__
中放置任何你想要的东西,但通常最好明确地将你的对象表示为一个字符串:
In [4]: class OtherThing(object):
... def __repr__(self):
... return "I'm an arbitrary string"
...
In [5]: [OtherThing(), OtherThing()]
Out[5]: [I'm an arbitrary string, I'm an arbitrary string]
我经常看到用于对象表示的<...>
字符串不是有效的Python代码,因为许多其他内置对象'__repr__
表示是重构等效对象的有效Python代码
答案 1 :(得分:3)
它不是Python语法,但它是对象的默认字符串表示的一部分,例如。
>>> a = object()
>>> a
<object object at 0x1009d10b0>
在您的情况下,看起来图书馆的实施者也采用了这种惯例。