打印对象python类
我编写了以下程序:打印对象python类,python,class,Python,Class,我编写了以下程序: def split_and_add(invoer): rij = invoer.split('=') rows = [] for line in rij: rows.append(process_row(line)) return rows def process_row(line): tem
def split_and_add(invoer):
rij = invoer.split('=')
rows = []
for line in rij:
rows.append(process_row(line))
return rows
def process_row(line):
temp_coordinate_row = CoordinatRow()
rij = line.split()
for coordinate in rij:
coor = process_coordinate(coordinate)
temp_coordinate_row.add_coordinaterow(coor)
return temp_coordinate_row
def process_coordinate(coordinate):
cords = coordinate.split(',')
return Coordinate(int(cords[0]),int(cords[1]))
bestand = file_input()
rows = split_and_add(bestand)
for row in range(0,len(rows)-1):
rij = rows[row].weave(rows[row+1])
print rij
在本课程中:
class CoordinatRow(object):
def __init__(self):
self.coordinaterow = []
def add_coordinaterow(self, coordinate):
self.coordinaterow.append(coordinate)
def weave(self,other):
lijst = []
for i in range(len(self.coordinaterow)):
lijst.append(self.coordinaterow[i])
try:
lijst.append(other.coordinaterow[i])
except IndexError:
pass
self.coordinaterow = lijst
return self.coordinaterow
然而,在这个过程中有一个错误
for row in range(0,len(rows)-1):
rij = rows[row].weave(rows[row+1])
print rij
打印声明的结果如下:
[<Coordinates.Coordinate object at 0x021F5630>, <Coordinates.Coordinate object at 0x021F56D0>]
[,]
似乎程序没有访问实际对象并打印它。我做错了什么?这不是错误。这正是Python“访问并打印实际对象”的含义。这是类的默认字符串表示形式 如果要自定义类的字符串表示形式,可以通过定义方法来实现。典型的方法是编写一个方法,返回类似于类的构造函数调用的内容 由于您没有向我们展示坐标的定义,我将在这里做一些假设:
class Coordinate(object):
def __init__(self, x, y):
self.x, self.y = x, y
# your other existing methods
def __repr__(self):
return '{}({}, {})'.format(type(self).__name__, self.x, self.y)
如果您不自己定义它,您最终会从对象
继承\uuuu repr\uuuu
,这类似于:
return '<{} object at {:#010x}>'.format(type(self).__qualname__, id(self))
现在:
您希望您的
坐标。坐标对象的输出是什么?你还没有定义特殊方法(AFAICT)。在这种情况下,我应该如何定义这样的方法?@Johnsyweb他看到的实际上是某种东西的复制品,但是我找不到一个问题,这个问题没有预先假定repr
和\uuuu repr\uuuu
首先存在的事实……啊,是的,当然。谢谢@JoranBeasley。不管怎样,我的问题仍然存在:)
def __str__(self):
return '<{}, {}>'.format(self.x, self.y)
>>> c = Coordinate(1, 2)
>>> c
Coordinate(1, 2)
>>> print(c)
<1, 2>
>>> cs = [c]
>>> print(cs)
[Coordinate(1, 2)]