首页 > 解决方案 > 我应该怎么做才能使 (name).move 成为 (name)?

问题描述

class Point:
def __init__(self, x=0, y=0):
    self.__x = x
    self.__y = y

def x(self, x):
    self.__x = x

def y(self, y):
    self.__y = y

def move(self, dx, dy):
    self.__x += dx
    self.__y += dy
    return Point(self.__x, self.__y)
    
def __str__(self):
    return "(%d, %d)" %(self.__x, self.__y)

def main() :
    a = Point()
    b = Point(1,5)
    print("a =",a)
    a.move(2,3)
    b.move(4,3).move(-1,-2)
    print("a =",a," B =",b)

main()

我想得到答案 a=(2, 3), b=(4, 6) 但是当我尝试调试时, b.move 只能工作一次。我想我应该得到 b.move =b 以便改变 b 本身,而不是 Point(self.__x, self.__y)。而不是写return Point(self.__x, self.__y),我应该写什么?

标签: python

解决方案


我认为您必须以这种方式定义移动方法:

    def move(self, dx, dy):
        self.__x += dx
        self.__y += dy
        return self


推荐阅读