Создание объекта и изменение его параметров в различных классах

Создаю объект в одном классе и пытаюсь реализовать управлением его параметров из другого.

Как правильно такое реализовывается? Может паттерном каким нибудь?

В комментариях к коду описал вопрос. Возможно изначально архитектура классов не верна, готов изменить.

class Car:
    color = "red"
    year = 215

class Form:
    volvo = Car()
    def setupUi(self, MainWindow):
        super().setupUi(MainWindow)
        self.add_function()
    def add_function():
        self.btn.clicked.connect(self.changeColorBlack)
    def changeColorBlack:
        self.volvo.color = "black"

# Как из этого класса обращаться к объекту volvo?
class Form_settings:
    def setupUi(self, MainWindow):
        super().setupUi(MainWindow)
        self.add_function()
    def add_function():
        self.btn.clicked.connect(self.changeColorWhite)
    def changeColorWhite:
        #Как из этой функции обращаться к объекту volvo?
        self.volvo.color = "white"

Ответы (1 шт):

Автор решения: S. Nick

Вы не предоставляете минимально-воспроизводимый пример - почему ?

Я увидел вашу задачу так:

from PyQt5 import QtCore, QtGui, QtWidgets


class Car:
    color = "red"
    year = 215


class Form(QtWidgets.QMainWindow):
    def __init__(self, parent):
        super().__init__()
        self.parent = parent
    
        self.centralwidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralwidget)
        self.setStyleSheet(f"QMainWindow {{background-color: {self.parent.car.color};}}")
        
        self.btn = QtWidgets.QPushButton('Поменять color')
        self.btnMain = QtWidgets.QPushButton('Окно main')
        
        layout = QtWidgets.QGridLayout(self.centralwidget)
        layout.addWidget(self.btn, 0, 0)                  
        layout.addWidget(self.btnMain, 1, 0)
        
        self.add_function()
        
    def add_function(self):
        self.btn.clicked.connect(self.changeColorBlack)
        self.btnMain.clicked.connect(self.openMain)
        
    def changeColorBlack(self):
        self.parent.car.color = "blue"
        self.setStyleSheet(f"QMainWindow {{background-color: {self.parent.car.color};}}")

    def openMain(self):       
        self.parent.setStyleSheet(f"QMainWindow {{background-color: {self.parent.car.color};}}")
        self.parent.show()
        self.close()
        

# Как из этого класса обращаться к объекту volvo?
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.centralwidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralwidget)
        
        self.btn = QtWidgets.QPushButton('Поменять color')
        self.btnForm = QtWidgets.QPushButton('Окно Form')
        
        layout = QtWidgets.QGridLayout(self.centralwidget)
        layout.addWidget(self.btn, 0, 0)                
        layout.addWidget(self.btnForm, 1, 0)
        
        self.car = Car()
        self.setStyleSheet(f"QMainWindow {{background-color: {self.car.color};}}")
        
        self.add_function()
        
    def add_function(self):
        self.btn.clicked.connect(self.changeColorWhite)
        self.btnForm.clicked.connect(self.openForm)
        
    def changeColorWhite(self):
        #Как из этой функции обращаться к объекту volvo?
#        self.volvo.color = "white"
        self.car.color = "yellow"
        self.setStyleSheet(f"QMainWindow {{background-color: {self.car.color};}}")
       
    def openForm(self):       
        self.form = Form(self)
        self.form.setWindowTitle("Hello Form.")
        self.form.show()
        self.hide()
        

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.setWindowTitle("Hello World!!")
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка