Как я могу получить доступ ко всем переменным из основной программы в импортированном им классе? - PullRequest
1 голос
/ 22 марта 2020

Я знаю, что на этот вопрос отвечали несколько раз, но ответы не совсем решают мою проблему.

В моем случае мне нужно использовать экран (и несколько других переменных, таких как level) из основной программы в импортируемом им классе.

Распространенным ответом является использование переменных в качестве параметра. Это не работает для меня, так как я не хочу передавать 5+ параметров каждый раз, когда я создаю класс.

Другой ответ - использовать from main import *. Это не работает так же, потому что некоторые переменные создаются после импорта класса.

Есть ли решение для этого?

Редактировать: Так структурирована моя программа:

main.py:

import module

screenX = 1000
screenY = 500
...

player = module.Player()

module.py:

class Player:
    def __init__(self):
        self.x = screenX
        self.y = screenY
        ...

    def go(self):
        self.x += 1
        if self.touchs(level):
            self.die()

    def touchs(self, object):
        ...

    def die(self):
        ...

Надеюсь, это поможет!

1 Ответ

1 голос
/ 22 марта 2020

Распространенным ответом является использование переменных в качестве параметра. Это не работает для меня, так как я не хочу передавать 5+ параметров каждый раз, когда я создаю класс.

Я думаю, вы недооцениваете, насколько гибким может быть такой подход. Посмотрите на следующий пример:

main.py

import module

settings = {
    "foo": "bar",
    # ...
}

player = module.Player(settings)
player.print_foo()
settings["foo"] = "baz"
player.print_foo()

module.py

class Player:
    def __init__(self, settings):
        self.settings = settings
    def print_foo(self):
        print(self.settings["foo"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...