Python Pygame两个对象之间的相对坐标,OOP

Python Pygame两个对象之间的相对坐标,OOP,python,oop,pygame,python-3.9,Python,Oop,Pygame,Python 3.9,假设我有一个类,在\uuuu init\uuuuu(self)部分包含对象坐标,如下所示: class myObject(object): def __init__(self, name): self.img = file1 self.x = random.randrange(0, 700) self.y = random.randrange(0, 700) ... 然后,在另一种方法中,x和y正在不断地改变: d

假设我有一个类,在
\uuuu init\uuuuu(self)
部分包含对象坐标,如下所示:

class myObject(object):
    def __init__(self, name):
        self.img = file1
        self.x = random.randrange(0, 700)
        self.y = random.randrange(0, 700)
        ...
然后,在另一种方法中,
x
y
正在不断地改变:

    def move(self):
        surface.blit(self.img, (self.x, self.y))
        self.x += 0.2
        self.y += 1
        ...
现在,假设我们有另一个类,其中有另一个对象。但该对象的坐标与第一个对象的坐标相关:

class myRelativeObject(self):
    def __init(self):
        self.img = file2
        self.x = myObject('instanceName').x + 20
        self.y = myObject('instanceName').y + 30

    def blit(self):
        surface.blit(self.img, (self.x, self.y))
现在的问题是,
myRelativeObject.x
myRelativeObject.y
值不是从
move()
函数中的变量
myObject.x
myObject.y
中获取的

然而,它们是从随机生成的
\uuuuu init\uuuuuu(self)
中获取的。 这会使第二个对象的坐标在每一帧中随机重新生成。此外,我希望它们与move()函数中的对象相关,这样当第一个对象移动时,第二个对象也随之移动

让这是第一个对象的实例:

myInstance = myObject('instanceName')
注:
请记住,类方法(init方法除外)是在while循环中运行的。

不采用对象的坐标,而是将引用对象本身作为属性:

类myRelativeObject(自):
定义初始化(自):
self.img=file2
self.reObject=myObject('instanceName')
self.relX=20
self.reline=30
def blit(自身):
x=self.reObject.x+self.relX
y=self.reObject.y+self.relY
表面波立特(自成像,(x,y))

我不知道我的代码是怎么回事,它仍然从init方法中获取值。不,它在loophmmmm之外,我发现问题出在哪里了!为了控制object1实例,我根据“name”参数对它们进行了分类。e、 g:
myinstance1=myObject('objectname')
,但是我引用了那个对象而不是那个实例