#python #python-3.x #class
#python #python-3.x #класс
Вопрос:
например f1.py (упрощенный):
...
class TestClass:
x = 0
...
и f2.py :
from f1 import *
tc = TestClass()
tc.x = 73
и f3.py :
from f1 import *
...
print(tc.x)
...
Конечно, это неправильно, но как сделать это правильно?
Ну, мне просто нужен доступ к данным и функциям в одном экземпляре класса из разных файлов, сравнимый, например, с ‘extern’ в C. Генерация нового экземпляра в каждом файле будет генерировать разные переменные, поэтому неприменимо. Спасибо за помощь.
Комментарии:
1. Теперь вот пример слишком маленького кода. Что на самом деле находится в,
f3.py
к которому нужно получить доступtc.x
?2. есть ли причина, по которой вы не можете импортировать f2 вместо f1 в f3?
3. хотя не совсем ясно, что вы пытаетесь сделать, если, как кажется, вам нужен экземпляр «singleton», то почему бы просто не поместить
tc = TestClass()
внизуf1.py
и просто импортировать его в другие файлы, а не в сам класс? (К сожалению, Python не позволяет вам отказаться от экспорта класса, как это делают многие другие языки.)4. Спасибо; комментарии и ответы помогли мне понять. Поэтому я использую более простой и достаточный метод с
tc = TestClass()
в f1.py и импортировать f1 в другие файлы, где это необходимо. Спасибо за быструю помощь5. @quamrana: Из-за своего размера проект состоит примерно из 10 разных файлов, большинство из которых имеют доступ к данным и методам одного и того же класса. Мне нравится использовать классы, чтобы сделать модули более переносимыми. Возможно, я зашел слишком далеко в сокращении описания, f3.py является заполнителем для большего количества файлов с той же функциональностью.
Ответ №1:
Просто импортируйте f2.py
:
from f2 import tc
...
print(tc.x)
...
Ответ №2:
В качестве тестового класса вы должны использовать одноэлементный класс. Ниже приведена ссылка на реализацию шаблона в Python, по которой вы можете следовать. https://www.tutorialspoint.com/python_design_patterns/python_design_patterns_singleton.htm