как использовать атрибут другого класса в проекте Python - PullRequest
0 голосов
/ 13 октября 2019
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», стр. 248.

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

def update_screen() является только определением, и Python не проверяет правильность переменных в определении. Он будет проверять переменные при выполнении этой функции. Кроме того, ship в update_screen() - это только локальная переменная, которую вы получаете в качестве аргумента в def update_screen(..., ship), поэтому вы не можете напрямую обращаться к ship.blitme() из другого файла.

Я ожидаю, что вы импортируете этот код в другойфайл и в другом файле вы выполняете его с экземпляром класса Ship, определение которого вы имеете в другом файле. Затем Python назначит существующие экземпляры Ship локальной переменной ship внутри update_screen(..., ship) и будет использовать методы blitme() из этого экземпляра.

То же самое с ai_settings и ai_setting.bg_color.


Что касается flip() - вы импортируете pygame в этот файл, а он импортирует pygame.display, поэтомупрямой доступ к pygame.display.flip() в этом файле.

0 голосов
/ 13 октября 2019

Причина, по которой вы можете получить доступ к другим переменным и методам, заключается в том, что модуль sys, который вы импортируете в начале.

В Python есть много модулей, доступных для импорта, и sys является одним из них. ,Модуль sys представляет собой набор функций, которые предоставляют важную информацию о том, как ваш скрипт Python взаимодействует с хост-системой.

Модули sys содержат информацию о:

  • Какая версия Python
  • Путь к исполняемому файлу Python, выполняющему ваш скрипт
  • Параметры командной строки, используемые для выполнения вашего скрипта
  • Все установленные для Python флаги, которые были установлены
  • Информация о значениях с плавающей запятой и их представлении.
  • функции, которые могут устанавливать, что происходит после каждой инструкции Python.
  • и функция для чистого выхода из интерпретатора Python.

Для более подробной информации: https://docs.python.org/3/library/sys.html

...