Python-如何在定义其他类之前从其他类获取信息/使用它们?

问题描述

我是python的初学者,我喜欢pygame模块中的编码。我一直在尝试创建pong,以更好地学习OOP,但是我遇到了一些问题。例如我尝试制作的一个基本的乒乓球游戏:

import pygame
...
Class Ball:
      def __init__(self,x,y,width,height):
         ...
      def check_collide(self):
          self.ball_rect.collide(paddle_left.get_rect())

Class Player:
      def __init__(self,w,h):
          ...
      def get_rect():
          return self.player_rect
 
def main():
    ball = Ball(400,400,20,20)
    paddle_left = Player(20,300,10,100)
    
    while True:
         draw()
         ...
main()

在第一堂课中,我试图获取left_paddle的当前位置,但是显然这给了我一个错误。 如果尚未定义其他类的函数,如何获取信息或使用它们呢?有什么更好的方法解决这个问题?

解决方法

您必须将对象实例传递给方法:

class Ball:
      def __init__(self,x,y,width,height):
         # [...]

      def check_collide_paddle(self,paddle):
          return self.ball_rect.collide(paddle.get_rect())
def main():
    ball = Ball(400,400,20,20)
    paddle_left = Player(20,300,10,100)
    paddle_right = Player(...)
    
    while True:
         # [...]

         if ball.check_collide_paddle(paddle_left):
             # [...]

         if ball.check_collide_paddle(paddle_right):
             # [...]