我不知道具体如何表示它,但是我想创建一个类Point,它可以以元组和单独的方式访问点的坐标,如下所示:
point.coord
# tuple (x,y)
point.coord.x
point.coord.y
# coordinates x and y我是否必须声明一个方法point.coord(),或者是否存在属性的属性?另外,为了其他目的,更长的嵌入式属性(object.attr1.attr2.attr3)怎么办?
发布于 2021-01-06 21:33:08
class Coord(tuple):
def __init__(self, points):
self.x, self.y = points
class Point:
def __init__(self, *points):
self.coord = Coord(points)
point = Point(1, 2)
print(point.coord)
print(point.coord.x)
print(point.coord.y)发布于 2021-01-06 20:20:12
这是给你的一个小问题。如果从tuple继承,则返回类型仍然是tuple,那么只需要Point的包装器和访问tuple属性的方法。这可以通过namedtuple或如下方式实现:
In [52]: class Coord(tuple):
...: def __init__(self, xy):
...: super().__init__()
...: x, y = xy
...: self._x = x
...: self._y = y
...: @property
...: def x(self):
...: return self._x
...: @property
...: def y(self):
...: return self._y
...:
In [53]: class Point:
...: def __init__(self, coord: Coord):
...: self.coord = coord
...:
In [54]: p = Point(Coord((5,12)))
In [55]: p.coord
Out[55]: (5, 12)
In [56]: p.coord.x
Out[56]: 5
In [57]: p.coord.y
Out[57]: 12https://stackoverflow.com/questions/65602349
复制相似问题