如何从python中的另一个类中获取内容?

如何从python中的另一个类中获取内容?,python,pygame,sprite,Python,Pygame,Sprite,我在MyGame类中的绘图功能中创建了两个不同的类Oranges和Witches和一个MyGame,我需要从Oranges类中获取位置,并将其添加到Witches类中的位置。例如,开关的新位置=橙色位置-开关的位置。我该怎么做 class Orange(object): def __init__(self, position, image): self.image = image self.position = (random.randint(350, 5

我在
MyGame
类中的绘图功能中创建了两个不同的类
Oranges
Witches
和一个
MyGame
,我需要从
Oranges
类中获取位置,并将其添加到
Witches
类中的位置。例如,开关的新位置=橙色位置-开关的位置。我该怎么做

class Orange(object):
    def __init__(self, position, image):
        self.image = image
        self.position = (random.randint(350, 500), random.randint(250, 350))  

    def draw(self, surface):
        surface.blit(self.image, self.position)

class Witch(object):
    def __init__(self, position, image):
        self.image = image
        self.position = (random.randint(0, 760), random.randint(0, 0))
        self.position1 = (random.randint(0, 0), random.randint(0, 520))
        self.position2  = (random.randint (0, 760), random.randint(480, 520))
        self.position3 = (random.randint (730, 760), random.randint(0, 520))

    def draw(self, surface):
        surface.blit(self.image, self.position)

class MyGame(object):
    def draw(self):

您的代码确实很长,但只需减去橙色和巫婆类的位置,以下内容就足够了。您必须为orange和witch类创建一个对象,只需执行以下操作。我不知道你是否在问其他问题,但从你的问题来看,我只能告诉你这些

new_orange=Orange(...input parameters...)
new_witch=Witch(...input parameters...)
new_witch.position=new_orange.position-new_witch.position
注意:您有两个位置是tuple,因此我建议您查看map功能并执行以下操作:

new_witch.position=tuple(map(lambda x,y:x-y,new_orange.position,new_witch.position))

这将给你一个iterable对象,你可以把它转换成tuple,我想把它留给你,作为你去寻找lambda和iterable对象的动力。

你的代码很长,但只需减去橙色和witch类的位置,下面应该足够了。您必须为orange和witch类创建一个对象,只需执行以下操作。我不知道你是否在问其他问题,但从你的问题来看,我只能告诉你这些

new_orange=Orange(...input parameters...)
new_witch=Witch(...input parameters...)
new_witch.position=new_orange.position-new_witch.position
注意:您有两个位置是tuple,因此我建议您查看map功能并执行以下操作:

new_witch.position=tuple(map(lambda x,y:x-y,new_orange.position,new_witch.position))

这将为您提供iterable对象,您可以将其转换为tuple,我想将其留给您,作为寻找lambda和iterable对象的动机。

new_orange=orange(…输入参数…),new_witch=witch(…输入参数…)new_witch.position=new_orange.position-new_witch.position….这样做有什么问题?再次检查缩进。您可能是从一个文本编辑器发布的,该编辑器设置为使用制表符进行缩进,这对于SO代码示例来说通常不是一个很好的选择。(不幸的是,这是Python为您纠正它会涉及猜测。)另外:建议简化代码示例,只包含与您的问题相关的内容。这里所有的绘图代码等大部分都是杂乱无章的。@millimoose:我完全同意你的看法。发布这么长的代码将延迟应答过程。剖析问题,只问需要什么,而不是提供太多通常令人讨厌的细节,这总是明智的。new_orange=orange(…输入参数…),new_witch=witch(…输入参数…)new_witch.position=new_orange.position-new_witch.position….这样做有什么问题?再次检查缩进。您可能是从一个文本编辑器发布的,该编辑器设置为使用制表符进行缩进,这对于SO代码示例来说通常不是一个很好的选择。(不幸的是,这是Python为您纠正它会涉及猜测。)另外:建议简化代码示例,只包含与您的问题相关的内容。这里所有的绘图代码等大部分都是杂乱无章的。@millimoose:我完全同意你的看法。发布这么长的代码将延迟应答过程。剖析问题,只问需要什么,而不是提供太多通常令人讨厌的细节,这总是明智的。。。但从概念上讲,是的(+1)我不知道当代码如此长,问题如此模糊时,如何回答它。他确实表现出了一些努力,但可能对自己真正想要的东西感到困惑。作为一名业余爱好者,我以这样的方式编程,并感受到了痛苦,但与此同时,代码太多,问题太小。我不知道他真正想要的是什么除了“新女巫的位置=橙色的位置-女巫的位置”他们的元组。。。因此,像那样减去原始值会爆炸,但希望他能找出他需要做的事情看看更新的答案,请访问并查看地图、lambda和iterables。这会对你有帮助的。他还得做更多的事。。。但从概念上讲,是的(+1)我不知道当代码如此长,问题如此模糊时,如何回答它。他确实表现出了一些努力,但可能对自己真正想要的东西感到困惑。作为一名业余爱好者,我以这样的方式编程,并感受到了痛苦,但与此同时,代码太多,问题太小。我不知道他真正想要的是什么除了“新女巫的位置=橙色的位置-女巫的位置”他们的元组。。。因此,像那样减去原始值会爆炸,但希望他能找出他需要做的事情看看更新的答案,请访问并查看地图、lambda和iterables。它会帮助你的。