Найти - Пользователи
Полная версия: Сослаться на экземпляр класса в другом модуле
Начало » Python для новичков » Сослаться на экземпляр класса в другом модуле
1
Serbis
Подскажите вот в какой ситуации. У меня имеются два модуля. В первом модуле есть класс и в этом же модуле происходит создание его инстанса. В втором модуле есть функция которой нужно передать этот инстанс. Все было бы просто, если бы можно было просто создать во втором модуле еще один инстанс класса Main(), но условие такого, что конструктор класса Main() может быть вызван только один раз за работу программы, поэтому второй инстанс класса создать создать нельзя. Как можно сослаться на main в модуле 1 из модуля 2?

Модуль 1
main = Main()
class Main():
  def __init__(self,):

Модуль 2
x = 'abc'
func(ИНСТАНС КЛАССА MAIN, x)
reclosedev
http://docs.python.org/tutorial/modules.html

module2:
from module1 import main
x = 42
func(main, x)
fata1ex
По мне так более правильно будет описать класс как-то так:
class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls._instance

И импортировать не непосредственно инстанс класса, а сам класс. А потом вызывать func(Main(), x). Будет более гибко в будущем, да и расшвыривать по модулям инстансы вроде не очень красиво.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB