打印对象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)]