如何在 Python 项目中使用其他 class 的属性

how to use other class's attribute in a Python project

import sys
import pygame

def check_event():
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()


def update_screen(ai_setting, screen, ship):
    screen.fill(ai_setting.bg_color)
    ship.blitme()
    pygame.display.flip()

属性 bg_color 和方法 flip()blitme() 来自同一目录中的另一个 .py 文件。

但我不明白这个 .py 文件如何在没有 import 的情况下使用和调用它们?

代码来自书籍 "Python Crash Course",第 248 页。

您能够访问其他变量和方法的原因是因为您在开始时导入了 sys 模块。

Python 有很多模块可以导入,sys 就是其中之一。 sys 模块是一组函数,可提供有关 Python 脚本如何与主机系统交互的重要信息。

sys 模块有以下信息:

  • Python 是什么版本 运行
  • 正在执行脚本的 Python 可执行文件的路径
  • 用于执行脚本的命令行选项
  • 已设置的任何 Python 个特定标志
  • 有关浮点值及其表示的信息。
  • 可以设置每个 python 指令后发生的事情的函数。
  • 和一个干净地退出 Python 解释器的函数。

更多详细信息:https://docs.python.org/3/library/sys.html

def update_screen() 只是定义,Python 不检查定义中的变量是否正确。当您执行此函数时,它将检查变量。除了 update_screen() 中的 ship 只是您在 def update_screen(..., ship) 中作为参数获取的局部变量,因此您不能直接从其他文件访问 ship.blitme()

我希望您将此代码导入其他文件,并在其他文件中使用您在其他文件中定义的 class Ship 实例执行它。然后 Python 将现有实例 Ship 分配给 update_screen(..., ship) 内的局部变量 ship 并且它将使用此实例中的方法 blitme()

ai_settingsai_setting.bg_color也是一样。


至于 flip() - 您在此文件中导入 pygame,它会导入 pygame.display,因此您可以直接访问此文件中的 pygame.display.flip()