2024-10-06 11:17:20 发布
网友
我不知道如何精确地表达它,但我想创建一个类Point,通过该类,点的坐标既可以作为元组访问,也可以单独访问,如下所示:
Point
point.coord # tuple (x,y) point.coord.x point.coord.y # coordinates x and y
我是否必须声明一个方法point.coord(),或者是否存在属性的属性?还有,出于其他目的,较长的嵌入属性(object.attr1.attr2.attr3)如何
point.coord()
object.attr1.attr2.attr3
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)
这里有一个小窍门给你。如果从tuple继承,那么返回类型仍然可以是tuple,那么只需要Point的包装器和访问tuple属性的方法。这可以通过namedtuple或者像这样做:
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]: 12
这里有一个小窍门给你。如果从
tuple
继承,那么返回类型仍然可以是tuple
,那么只需要Point
的包装器和访问tuple
属性的方法。这可以通过namedtuple
或者像这样做:相关问题 更多 >
编程相关推荐